<?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>208591</bug_id>
          
          <creation_ts>2020-03-04 12:13:02 -0800</creation_ts>
          <short_desc>WKWebView&apos;s frames accessor should return a traversable type</short_desc>
          <delta_ts>2020-03-04 13:18:34 -0800</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1625688</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-04 12:13:02 -0800</bug_when>
    <thetext>WKWebView&apos;s frames accessor should return a traversable type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625690</commentid>
    <comment_count>1</comment_count>
      <attachid>392456</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-04 12:16:18 -0800</bug_when>
    <thetext>Created attachment 392456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625694</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-04 12:35:59 -0800</bug_when>
    <thetext>http://trac.webkit.org/r257872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625695</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-04 12:36:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/60051659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625723</commentid>
    <comment_count>4</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-03-04 13:18:34 -0800</bug_when>
    <thetext>Committed r257874: &lt;https://trac.webkit.org/changeset/257874&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392456</attachid>
            <date>2020-03-04 12:16:18 -0800</date>
            <delta_ts>2020-03-04 12:32:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208591-20200304121617.patch</filename>
            <type>text/plain</type>
            <size>49509</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTc4MzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDIwLTAzLTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV0tXZWJWaWV3J3Mg
ZnJhbWVzIGFjY2Vzc29yIHNob3VsZCByZXR1cm4gYSB0cmF2ZXJzYWJsZSB0eXBlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1OTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSYXRoZXIgdGhhbiByZXR1
cm4gYW4gYXJyYXkgb2YgaW5mb3JtYXRpb24gdGhhdCBjYW4gdGVjaG5pY2FsbHkgYmUgdXNlZCB0
byByZWNvbnN0cnVjdCBhIHRyZWUsCisgICAgICAgIGxldCdzIGp1c3QgcmV0dXJuIHRoZSByb290
IG9mIGEgdHJlZS4gVGhpcyBpbnRyb2R1Y2VzIF9XS0ZyYW1lVHJlZU5vZGUgd2hpY2ggaW5oZXJp
dHMgZnJvbSBXS0ZyYW1lSW5mby4KKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9B
UElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAg
KiBTaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lSW5mb0RhdGE6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL0ZyYW1lSW5mb0RhdGEuaDoKKyAgICAgICAgKiBTaGFyZWQv
RnJhbWVUcmVlTm9kZURhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkZyYW1lVHJlZU5v
ZGVEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZVRyZWVOb2RlRGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcDoKKyAgICAg
ICAgKEFQSTo6RnJhbWVJbmZvOjpwYXJlbnRGcmFtZUhhbmRsZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChBUEk6OkZyYW1lSW5mbzo6Y2hpbGRGcmFtZUhhbmRsZXMgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElGcmFtZVRyZWVOb2RlLmNwcDogQWRkZWQuCisgICAgICAgIChBUEk6OkZy
YW1lVHJlZU5vZGU6OmhhbmRsZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElG
cmFtZVRyZWVOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tG
cmFtZUluZm8ubW06CisgICAgICAgICgtW1dLRnJhbWVJbmZvIF9wYXJlbnRGcmFtZUhhbmRsZV0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS0ZyYW1lSW5mbyBfY2hpbGRGcmFtZUhhbmRsZXNdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvUHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2ZyYW1lczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9hbGxGcmFt
ZXM6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2Rl
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9k
ZS5tbTogQWRkZWQuCisgICAgICAgICgtW19XS0ZyYW1lVHJlZU5vZGUgZGVhbGxvY10pOgorICAg
ICAgICAoLVtfV0tGcmFtZVRyZWVOb2RlIGlzTWFpbkZyYW1lXSk6CisgICAgICAgICgtW19XS0Zy
YW1lVHJlZU5vZGUgcmVxdWVzdF0pOgorICAgICAgICAoLVtfV0tGcmFtZVRyZWVOb2RlIHNlY3Vy
aXR5T3JpZ2luXSk6CisgICAgICAgICgtW19XS0ZyYW1lVHJlZU5vZGUgd2ViVmlld10pOgorICAg
ICAgICAoLVtfV0tGcmFtZVRyZWVOb2RlIGNoaWxkRnJhbWVzXSk6CisgICAgICAgICgtW19XS0Zy
YW1lVHJlZU5vZGUgY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtfV0tGcmFtZVRyZWVOb2Rl
IF9oYW5kbGVdKToKKyAgICAgICAgKC1bX1dLRnJhbWVUcmVlTm9kZSBfYXBpT2JqZWN0XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0QWxsRnJhbWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjppbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNoaWxk
RnJhbWVJRHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZnJhbWVJRCBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpmcmFtZVRyZWVOb2RlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFsbEZy
YW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wMy0wMyAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBTUEkgX1dLUmVzb3VyY2VMb2FkSW5mby5sb2FkZWRGcm9tQ2FjaGUKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAkocmV2aXNpb24gMjU3ODM0KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI5LDYgKzMyOSw3IEBAIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVF
bGVtZW50SW5mby4KIFVJUHJvY2Vzcy9BUEkvQVBJRGVidWdnYWJsZUluZm8uY3BwCiBVSVByb2Nl
c3MvQVBJL0FQSUV4cGVyaW1lbnRhbEZlYXR1cmUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUZyYW1l
SW5mby5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVUcmVlTm9kZS5jcHAKIFVJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI1NzgzNCkKKysrIFNvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw3IEBAIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVu
dEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGlu
Zy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFeHBlcmltZW50YWxGZWF0dXJlLm1tCitVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3IubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCShyZXZpc2lvbiAyNTc4
MzQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsOCArMzYsNiBAQCB2b2lkIEZyYW1lSW5mb0RhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImCiAgICAgZW5jb2RlciA8PCByZXF1ZXN0OwogICAgIGVuY29kZXIgPDwgc2VjdXJpdHlP
cmlnaW47CiAgICAgZW5jb2RlciA8PCBmcmFtZUlEOwotICAgIGVuY29kZXIgPDwgcGFyZW50RnJh
bWVJRDsKLSAgICBlbmNvZGVyIDw8IGNoaWxkRnJhbWVJRHM7CiB9CiAKIE9wdGlvbmFsPEZyYW1l
SW5mb0RhdGE+IEZyYW1lSW5mb0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBA
IC02MiwyMyArNjAsMTEgQEAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gRnJhbWVJbmZvRGF0YTo6
ZAogICAgIGlmICghZnJhbWVJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAg
IE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+IHBhcmVudEZyYW1l
SUQ7Ci0gICAgZGVjb2RlciA+PiBwYXJlbnRGcmFtZUlEOwotICAgIGlmICghZnJhbWVJRCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+PiBjaGlsZEZyYW1lSURzOwotICAgIGRlY29kZXIgPj4gY2hpbGRG
cmFtZUlEczsKLSAgICBpZiAoIWZyYW1lSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqaXNNYWluRnJhbWUpLAogICAgICAg
ICBXVEZNb3ZlKCpyZXF1ZXN0KSwKICAgICAgICAgV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4pLAot
ICAgICAgICBXVEZNb3ZlKCpmcmFtZUlEKSwKLSAgICAgICAgV1RGTW92ZSgqcGFyZW50RnJhbWVJ
RCksCi0gICAgICAgIFdURk1vdmUoKmNoaWxkRnJhbWVJRHMpCisgICAgICAgIFdURk1vdmUoKmZy
YW1lSUQpCiAgICAgfX07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5m
b0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRh
LmgJKHJldmlzaW9uIDI1NzgzNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0Rh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsNiBAQCBzdHJ1Y3QgRnJhbWVJbmZvRGF0
YSB7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luOwogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IHBhcmVudEZyYW1lSUQ7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4gY2hpbGRGcmFtZUlEczsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0ZyYW1lVHJlZU5vZGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
RnJhbWVUcmVlTm9kZURhdGEuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9GcmFtZVRyZWVOb2RlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bXBvcnQgIkZyYW1lSW5mb0RhdGEuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBG
cmFtZVRyZWVOb2RlRGF0YSB7CisKKyAgICBGcmFtZUluZm9EYXRhIGluZm87CisgICAgVmVjdG9y
PEZyYW1lVHJlZU5vZGVEYXRhPiBjaGlsZHJlbjsKKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgaW5mbzsKKyAg
ICAgICAgZW5jb2RlciA8PCBjaGlsZHJlbjsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8
RnJhbWVUcmVlTm9kZURhdGE+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCisgICAgewor
ICAgICAgICBPcHRpb25hbDxGcmFtZUluZm9EYXRhPiBpbmZvOworICAgICAgICBkZWNvZGVyID4+
IGluZm87CisgICAgICAgIGlmICghaW5mbykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIAorICAgICAgICBPcHRpb25hbDxWZWN0b3I8RnJhbWVUcmVlTm9kZURhdGE+
PiBjaGlsZHJlbjsKKyAgICAgICAgZGVjb2RlciA+PiBjaGlsZHJlbjsKKyAgICAgICAgaWYgKCFj
aGlsZHJlbikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUoKmluZm8pLAorICAgICAgICAgICAg
V1RGTW92ZSgqY2hpbGRyZW4pCisgICAgICAgIH19OworICAgIH0KK307CisKK30KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDI1NzgzNCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYg
KzEyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgRnJhbWUsCiAgICAgICAgIEZyYW1lSW5mbywKICAg
ICAgICAgRnJhbWVQb2xpY3lMaXN0ZW5lciwKKyAgICAgICAgRnJhbWVUcmVlTm9kZSwKICAgICAg
ICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdlciwKICAgICAg
ICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDI1NzgzNCkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBA
QAogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVu
dGFsRmVhdHVyZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgi
CisjaW1wb3J0ICJfV0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0dlb2xv
Y2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmgiCkBA
IC0yNDEsNiArMjQyLDkgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5
cAogICAgICAgICB3cmFwcGVyID0gW1dLRnJhbWVJbmZvIGFsbG9jXTsKICAgICAgICAgYnJlYWs7
CiAKKyAgICBjYXNlIFR5cGU6OkZyYW1lVHJlZU5vZGU6CisgICAgICAgIHdyYXBwZXIgPSBbX1dL
RnJhbWVUcmVlTm9kZSBhbGxvY107CisgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgY2FzZSBUeXBlOjpHZW9sb2NhdGlvblBvc2l0aW9uOgogICAgICAgICB3cmFw
cGVyID0gW19XS0dlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTc4MzQpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDUx
LDcgKzQwNTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc0F0dHJpYnV0CiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxGcmFtZUluZm9EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRBbGxGcmFtZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChG
cmFtZVRyZWVOb2RlRGF0YSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFsbEZyYW1lcygpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkocmV2aXNpb24gMjU3ODM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMSw2ICszMjEsNyBAQCBzdHJ1Y3QgRG9j
dW1lbnRFZGl0aW5nQ29udGV4dDsKIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVz
dDsKIHN0cnVjdCBFZGl0aW5nUmFuZ2U7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7CitzdHJ1Y3QgRnJh
bWVUcmVlTm9kZURhdGE7CiBzdHJ1Y3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbjsKIHN0cnVj
dCBGb250SW5mbzsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwpAQCAtNTA0LDcgKzUwNSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJn
ZXRJZCk7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAotICAgIHZvaWQgZ2V0QWxs
RnJhbWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPEZyYW1lSW5mb0RhdGE+JiYpPiYm
KTsKKyAgICB2b2lkIGdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYW1lVHJl
ZU5vZGVEYXRhJiYpPiYmKTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIHZv
aWQgc2V0SW5kaWNhdGluZyhib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElGcmFtZUluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElGcmFtZUluZm8uY3BwCShyZXZpc2lvbiAyNTc4MzQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMjAg
KzQ5LDQgQEAgUmVmPEZyYW1lSGFuZGxlPiBGcmFtZUluZm86OmhhbmRsZSgpIGNvbgogICAgIHJl
dHVybiBGcmFtZUhhbmRsZTo6Y3JlYXRlKG1fZGF0YS5mcmFtZUlEID8gKm1fZGF0YS5mcmFtZUlE
IDogV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHsgfSk7CiB9CiAKLVJlZlB0cjxGcmFtZUhhbmRs
ZT4gRnJhbWVJbmZvOjpwYXJlbnRGcmFtZUhhbmRsZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2Rh
dGEucGFyZW50RnJhbWVJRCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIEZy
YW1lSGFuZGxlOjpjcmVhdGUoKm1fZGF0YS5wYXJlbnRGcmFtZUlEKTsKLX0KLQotVmVjdG9yPFJl
ZjxGcmFtZUhhbmRsZT4+IEZyYW1lSW5mbzo6Y2hpbGRGcmFtZUhhbmRsZXMoKSBjb25zdAotewot
ICAgIFZlY3RvcjxSZWY8RnJhbWVIYW5kbGU+PiBoYW5kbGVzOwotICAgIGhhbmRsZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX2RhdGEuY2hpbGRGcmFtZUlEcy5zaXplKCkpOwotICAgIGZvciAo
YXV0byYgY2hpbGRGcmFtZUlEIDogbV9kYXRhLmNoaWxkRnJhbWVJRHMpCi0gICAgICAgIGhhbmRs
ZXMudW5jaGVja2VkQXBwZW5kKEZyYW1lSGFuZGxlOjpjcmVhdGUoY2hpbGRGcmFtZUlEKSk7Ci0g
ICAgcmV0dXJuIGhhbmRsZXM7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uaAkocmV2aXNpb24gMjU3ODM0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw4ICs1Myw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2RhdGEucmVxdWVzdDsgfQogICAg
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSB7IHJldHVybiBt
X2RhdGEuc2VjdXJpdHlPcmlnaW47IH0KICAgICBSZWY8RnJhbWVIYW5kbGU+IGhhbmRsZSgpIGNv
bnN0OwotICAgIFJlZlB0cjxGcmFtZUhhbmRsZT4gcGFyZW50RnJhbWVIYW5kbGUoKSBjb25zdDsK
LSAgICBWZWN0b3I8UmVmPEZyYW1lSGFuZGxlPj4gY2hpbGRGcmFtZUhhbmRsZXMoKSBjb25zdDsK
ICAgICBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsg
fQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1l
VHJlZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElGcmFtZVRyZWVOb2RlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRnJhbWVUcmVlTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElGcmFt
ZVRyZWVOb2RlLmgiCisKKyNpbmNsdWRlICJBUElGcmFtZUhhbmRsZS5oIgorI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgorCituYW1lc3BhY2UgQVBJIHsKKworRnJhbWVUcmVlTm9kZTo6fkZyYW1l
VHJlZU5vZGUoKSA9IGRlZmF1bHQ7CisKK1JlZjxGcmFtZUhhbmRsZT4gRnJhbWVUcmVlTm9kZTo6
aGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRnJhbWVIYW5kbGU6OmNyZWF0ZShtX2RhdGEu
aW5mby5mcmFtZUlEID8gKm1fZGF0YS5pbmZvLmZyYW1lSUQgOiBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgeyB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVUcmVlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZVRyZWVOb2RlLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lVHJlZU5vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJGcmFtZVRyZWVOb2RlRGF0YS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7
CisKK2NsYXNzIEZyYW1lSGFuZGxlOworCitjbGFzcyBGcmFtZVRyZWVOb2RlIGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpGcmFtZVRyZWVOb2RlPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxGcmFtZVRyZWVOb2RlPiBjcmVhdGUoV2ViS2l0OjpGcmFtZVRyZWVOb2Rl
RGF0YSYmIGRhdGEsIFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZyYW1lVHJlZU5vZGUoV1RGTW92ZShkYXRhKSwgcGFnZSkpOyB9CisgICAgdmlydHVh
bCB+RnJhbWVUcmVlTm9kZSgpOworCisgICAgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UoKSB7
IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KKyAgICBib29sIGlzTWFpbkZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmluZm8uaXNNYWluRnJhbWU7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaW5mby5yZXF1ZXN0
OyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pbmZvLnNlY3VyaXR5T3JpZ2luOyB9CisgICAgY29u
c3QgVmVjdG9yPFdlYktpdDo6RnJhbWVUcmVlTm9kZURhdGE+JiBjaGlsZEZyYW1lcygpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5jaGlsZHJlbjsgfQorICAgIFJlZjxGcmFtZUhhbmRsZT4gaGFuZGxl
KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRnJhbWVUcmVlTm9kZShXZWJLaXQ6OkZyYW1lVHJl
ZU5vZGVEYXRhJiYgZGF0YSwgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgICAgIDog
bV9kYXRhKFdURk1vdmUoZGF0YSkpCisgICAgICAgICwgbV9wYWdlKHBhZ2UpIHsgfQorCisgICAg
V2ViS2l0OjpGcmFtZVRyZWVOb2RlRGF0YSBtX2RhdGE7CisgICAgUmVmPFdlYktpdDo6V2ViUGFn
ZVByb3h5PiBtX3BhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0JKHJldmlzaW9u
IDI1NzgzNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5m
by5tbQkod29ya2luZyBjb3B5KQpAQCAtODksMjAgKzg5LDQgQEAgLSAoX1dLRnJhbWVIYW5kbGUg
KilfaGFuZGxlCiAgICAgcmV0dXJuIFtbd3JhcHBlcihfZnJhbWVJbmZvLT5oYW5kbGUoKSkgcmV0
YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKLS0gKF9XS0ZyYW1lSGFuZGxlICopX3BhcmVudEZyYW1l
SGFuZGxlCi17Ci0gICAgcmV0dXJuIFtbd3JhcHBlcihfZnJhbWVJbmZvLT5wYXJlbnRGcmFtZUhh
bmRsZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoTlNBcnJheTxfV0tGcmFtZUhh
bmRsZSAqPiAqKV9jaGlsZEZyYW1lSGFuZGxlcwotewotICAgIGNvbnN0IGF1dG8mIGhhbmRsZXMg
PSBfZnJhbWVJbmZvLT5jaGlsZEZyYW1lSGFuZGxlcygpOwotICAgIGlmICghaGFuZGxlcy5zaXpl
KCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgTlNNdXRhYmxlQXJyYXk8X1dLRnJhbWVIYW5k
bGUgKj4gKnNldCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpoYW5kbGVzLnNp
emUoKV07Ci0gICAgZm9yIChhdXRvJiBoYW5kbGUgOiBoYW5kbGVzKQotICAgICAgICBbc2V0IGFk
ZE9iamVjdDp3cmFwcGVyKGhhbmRsZS5nZXQoKSldOwotICAgIHJldHVybiBzZXQ7Ci19Ci0KIEBl
bmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mb1By
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tGcmFtZUluZm9Qcml2YXRlLmgJKHJldmlzaW9uIDI1NzgzNCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mb1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNSBAQAogQGludGVyZmFjZSBXS0ZyYW1lSW5mbyAoV0tQcml2YXRlKQogCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHksIG5vbm51bGwpIF9XS0ZyYW1lSGFu
ZGxlICpfaGFuZGxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwot
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5LCBudWxsYWJsZSkgX1dLRnJhbWVI
YW5kbGUgKl9wYXJlbnRGcmFtZUhhbmRsZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5LCBudWxsYWJsZSkgTlNBcnJheTxfV0tGcmFtZUhhbmRsZSAqPiAqX2NoaWxkRnJhbWVIYW5k
bGVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQkocmV2aXNpb24gMjU3ODM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiQVBJRm9ybUNsaWVudC5o
IgorI2ltcG9ydCAiQVBJRnJhbWVUcmVlTm9kZS5oIgogI2ltcG9ydCAiQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2ltcG9ydCAi
QXR0cmlidXRlZFN0cmluZy5oIgpAQCAtOTcsNiArOTgsNyBAQAogI2ltcG9ydCAiX1dLRGlhZ25v
c3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRmluZERlbGVnYXRlLmgiCiAjaW1w
b3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tGcmFtZVRyZWVOb2Rl
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Z1bGxzY3JlZW5EZWxlZ2F0ZS5oIgogI2ltcG9ydCAi
X1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnB1dERlbGVnYXRlLmgi
CkBAIC0xNTgyLDEzICsxNTg0LDExIEBAIC0gKEJPT0wpX25lZ290aWF0ZWRMZWdhY3lUTFMKICAg
ICByZXR1cm4gX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5oYXNOZWdvdGlhdGVkTGVnYWN5VExTKCk7
CiB9CiAKLS0gKHZvaWQpX2FsbEZyYW1lczoodm9pZCAoXikoTlNBcnJheTxXS0ZyYW1lSW5mbyAq
PiAqKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfZnJhbWVzOih2b2lkICheKShfV0tGcmFt
ZVRyZWVOb2RlICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgX3BhZ2UtPmdldEFsbEZyYW1l
cyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCBw
YWdlID0gbWFrZVJlZlB0cihfcGFnZS5nZXQoKSldIChWZWN0b3I8V2ViS2l0OjpGcmFtZUluZm9E
YXRhPiYmIGZyYW1lcykgewotICAgICAgICBOU011dGFibGVBcnJheTxXS0ZyYW1lSW5mbyAqPiAq
YXBpRnJhbWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmZyYW1lcy5zaXpl
KCldOwotICAgICAgICBmb3IgKGF1dG8mIGZyYW1lIDogV1RGTW92ZShmcmFtZXMpKQotICAgICAg
ICAgICAgW2FwaUZyYW1lcyBhZGRPYmplY3Q6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRl
KFdURk1vdmUoZnJhbWUpLCBwYWdlLmdldCgpKSldOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhcGlGcmFtZXMpOworICAgIF9wYWdlLT5nZXRBbGxGcmFtZXMoW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgcGFnZSA9IG1ha2VSZWYoKl9wYWdl
LmdldCgpKV0gKFdlYktpdDo6RnJhbWVUcmVlTm9kZURhdGEmJiBkYXRhKSB7CisgICAgICAgIF9X
S0ZyYW1lVHJlZU5vZGUgKm5vZGUgPSBbW3dyYXBwZXIoQVBJOjpGcmFtZVRyZWVOb2RlOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSwgcGFnZS5nZXQoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihub2RlKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CShyZXZpc2lvbiAyNTc4MzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOSArMTA1LDkgQEAgdHlw
ZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZAogCiBAY2xhc3MgV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGU7CiBAY2xhc3MgV0tXZWJwYWdlUHJlZmVyZW5jZXM7Ci1AY2xhc3MgV0tG
cmFtZUluZm87CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsKIEBjbGFzcyBfV0tGcmFt
ZUhhbmRsZTsKK0BjbGFzcyBfV0tGcmFtZVRyZWVOb2RlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1
bHQ7CiBAY2xhc3MgX1dLSW5zcGVjdG9yOwogQGNsYXNzIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
OwpAQCAtMTcyLDcgKzE3Miw3IEBAIGZvciB0aGlzIHByb3BlcnR5LgogKi8KIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfbmVnb3RpYXRlZExlZ2FjeVRMUyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCi0tICh2b2lkKV9h
bGxGcmFtZXM6KHZvaWQgKF4pKE5TQXJyYXk8V0tGcmFtZUluZm8gKj4gKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKy0gKHZvaWQpX2ZyYW1lczoodm9pZCAoXikoX1dLRnJhbWVUcmVlTm9kZSAqKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogCiAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG9uY2Ugbm9ib2R5IGlzIHVzaW5nIHRo
ZW0uCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGF0YSAqX3Nlc3Npb25TdGF0
ZURhdGE7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVU
cmVlTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tGcmFtZVRyZWVOb2RlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGcmFt
ZUluZm8uaD4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0ZyYW1lVHJlZU5vZGUgOiBXS0ZyYW1lSW5mbworCisr
IChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXQg
TlNfVU5BVkFJTEFCTEU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJh
eTxfV0tGcmFtZVRyZWVOb2RlICo+ICpjaGlsZEZyYW1lczsKKworQGVuZApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUu
bW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0ZyYW1lVHJlZU5vZGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJfV0tGcmFt
ZUhhbmRsZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIK
KworQGltcGxlbWVudGF0aW9uIF9XS0ZyYW1lVHJlZU5vZGUKKworLSAodm9pZClkZWFsbG9jCit7
CisgICAgX25vZGUtPkFQSTo6RnJhbWVUcmVlTm9kZTo6fkZyYW1lVHJlZU5vZGUoKTsKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEJPT0wpaXNNYWluRnJhbWUKK3sKKyAgICByZXR1cm4g
X25vZGUtPmlzTWFpbkZyYW1lKCk7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sK
KyAgICByZXR1cm4gX25vZGUtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJv
ZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworfQorCistIChXS1NlY3VyaXR5
T3JpZ2luICopc2VjdXJpdHlPcmlnaW4KK3sKKyAgICBhdXRvJiBkYXRhID0gX25vZGUtPnNlY3Vy
aXR5T3JpZ2luKCk7CisgICAgYXV0byBhcGlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoZGF0YS5wcm90b2NvbCwgZGF0YS5ob3N0LCBkYXRhLnBvcnQpOworICAgIHJldHVybiBb
W3dyYXBwZXIoYXBpT3JpZ2luLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKK30KKworLSAo
V0tXZWJWaWV3ICopd2ViVmlldworeworICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHkoX25v
ZGUtPnBhZ2UoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKE5TQXJyYXk8X1dLRnJh
bWVUcmVlTm9kZSAqPiAqKWNoaWxkRnJhbWVzCit7CisgICAgY29uc3QgYXV0byYgY2hpbGRyZW4g
PSBfbm9kZS0+Y2hpbGRGcmFtZXMoKTsKKyAgICBOU011dGFibGVBcnJheTxfV0tGcmFtZVRyZWVO
b2RlICo+ICphcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjaGlsZHJl
bi5zaXplKCldOworICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbikKKyAgICAg
ICAgW2FycmF5IGFkZE9iamVjdDp3cmFwcGVyKEFQSTo6RnJhbWVUcmVlTm9kZTo6Y3JlYXRlKFdl
YktpdDo6RnJhbWVUcmVlTm9kZURhdGEoY2hpbGQpLCBfbm9kZS0+cGFnZSgpKSldOworICAgIHJl
dHVybiBhcnJheTsKK30KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7Cisg
ICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Cit9CisKKy0gKF9XS0ZyYW1lSGFuZGxlICopX2hhbmRs
ZQoreworICAgIHJldHVybiBbW3dyYXBwZXIoX25vZGUtPmhhbmRsZSgpKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKK30KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4g
Kl9ub2RlOworfQorCitAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVO
b2RlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiQVBJRnJhbWVUcmVlTm9kZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKyNp
bXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpGcmFtZVRyZWVOb2RlPiB7CisgICAgdXNp
bmcgV3JhcHBlckNsYXNzID0gX1dLRnJhbWVUcmVlTm9kZTsKK307CisKK30KKworQGludGVyZmFj
ZSBfV0tGcmFtZVRyZWVOb2RlICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9i
amVjdFN0b3JhZ2U8QVBJOjpGcmFtZVRyZWVOb2RlPiBfbm9kZTsKK30KK0BlbmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjU3ODM0KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE0OCw2ICsxMTQ4LDggQEAKIAkJNThFOTc3REYyMUM0
OUEwMDAwNUQ5MkE2IC8qIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OEU5NzdERDIxQzQ5QTAwMDA1RDky
QTYgLyogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCAqLzsgfTsKIAkJNUMwQjE3NzgxRTdD
ODgwRTAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQjE3NzQxRTdD
ODc5QzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQk1QzBCMTc3OTFFN0M4ODIxMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDMEIxNzc2MUU3Qzg3OUMwMEU5MTIzQyAvKiBXZWJTb2NrZXRTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQk1QzEyMUU4NDI0MTAyMDhEMDA0ODZGOUIgLyogRnJhbWVUcmVl
Tm9kZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDMTIxRTgzMjQxMDFGNzAwMDQ4NkY5QiAvKiBGcmFtZVRyZWVOb2RlRGF0YS5oICovOyB9Owor
CQk1QzEyMUU4OTI0MTAyOUM5MDA0ODZGOUIgLyogX1dLRnJhbWVUcmVlTm9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxMjFFODgyNDEwMjkwRDAw
NDg2RjlCIC8qIF9XS0ZyYW1lVHJlZU5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzE0MjZFRDFDMjNGODA5MDBENDExODMgLyogTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTQyNkUzMUMyM0Y4MDUwMEQ0MTE4MyAvKiBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk1QzE0MjZFRTFDMjNGODA5MDBENDEx
ODMgLyogTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzE0MjZFNDFDMjNGODA1MDBENDExODMgLyogTmV0d29y
a1Byb2Nlc3NTdXBwbGVtZW50LmggKi87IH07CiAJCTVDMTQyNkYwMUMyM0Y4MDkwMEQ0MTE4MyAv
KiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNDI2RTYxQzIzRjgwNTAwRDQxMTgzIC8qIE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggKi87IH07CkBAIC0zOTM3LDYgKzM5MzksMTIgQEAK
IAkJNUMwQjE3N0UxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1NvY2tldFN0cmVhbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzBCMTc3RjFFN0M4ODY3MDBFOTEyM0MgLyogTmV0
d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3
b3JrU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzBCMTc4MDFFN0M4ODgwMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYlNvY2tldFN0cmVhbS5tZXNzYWdlcy5pbjsgcGF0
aCA9IE5ldHdvcmsvV2ViU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzEyMUU4MzI0MTAxRjcwMDA0ODZGOUIgLyogRnJhbWVUcmVlTm9kZURh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmVlTm9kZURhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMxMjFFODUyNDEwMjc2RjAwNDg2RjlC
IC8qIEFQSUZyYW1lVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJRnJhbWVUcmVlTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzEyMUU4
NjI0MTAyOTBEMDA0ODZGOUIgLyogX1dLRnJhbWVUcmVlTm9kZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0ZyYW1lVHJlZU5vZGUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDMTIxRTg3MjQxMDI5MEQwMDQ4NkY5QiAvKiBfV0tGcmFtZVRy
ZWVOb2RlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRnJh
bWVUcmVlTm9kZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMTIx
RTg4MjQxMDI5MEQwMDQ4NkY5QiAvKiBfV0tGcmFtZVRyZWVOb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0ZyYW1lVHJlZU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUMxMjFFOEIyNDEwMzA2NjAwNDg2RjlCIC8qIEFQSUZyYW1lVHJlZU5vZGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJRnJhbWVUcmVlTm9k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTMwMjRBMUZFMzQxQTcwMDBE
OUIzMSAvKiBXZWJzaXRlUG9saWNpZXNEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYnNpdGVQb2xpY2llc0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMxNDI2RTIxQzIzRjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMxNDI2RTMxQzIzRjgwNTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01Nzg3
LDYgKzU3OTUsNyBAQAogCQkJCUJDRTgxRDhCMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5o
ICovLAogCQkJCTFBMTRGOERGMUQ3NEM4MzQwMDZDQkVDNiAvKiBGcmFtZUluZm9EYXRhLmNwcCAq
LywKIAkJCQkxQTE0RjhFMDFENzRDODM0MDA2Q0JFQzYgLyogRnJhbWVJbmZvRGF0YS5oICovLAor
CQkJCTVDMTIxRTgzMjQxMDFGNzAwMDQ4NkY5QiAvKiBGcmFtZVRyZWVOb2RlRGF0YS5oICovLAog
CQkJCTFBQzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCAq
LywKIAkJCQlCQ0NGNkIyMzEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggKi8sCiAJ
CQkJMUE5MkRDMTIxMkY4QkFCOTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuY3BwICovLApA
QCAtNjk1OCw2ICs2OTY3LDkgQEAKIAkJCQkyREVBQzVDRTFBQzM2OEJCMDBBMTk1RDggLyogX1dL
RmluZE9wdGlvbnMuaCAqLywKIAkJCQkyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRm9j
dXNlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8qIF9X
S0Zvcm1JbnB1dFNlc3Npb24uaCAqLywKKwkJCQk1QzEyMUU4ODI0MTAyOTBEMDA0ODZGOUIgLyog
X1dLRnJhbWVUcmVlTm9kZS5oICovLAorCQkJCTVDMTIxRTg2MjQxMDI5MEQwMDQ4NkY5QiAvKiBf
V0tGcmFtZVRyZWVOb2RlLm1tICovLAorCQkJCTVDMTIxRTg3MjQxMDI5MEQwMDQ4NkY5QiAvKiBf
V0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCAqLywKIAkJCQlDRDc4RTExODFEQjdFNUFEMDAxNEEy
REUgLyogX1dLRnVsbHNjcmVlbkRlbGVnYXRlLmggKi8sCiAJCQkJNjNGQUJFMTkxRTk3MEQ2NTAw
MzAxMUQ1IC8qIF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCAqLywKIAkJCQk2
M0MzMkMyNDFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oICovLApA
QCAtODgyOSw2ICs4ODQxLDggQEAKIAkJCQkzN0UyNUQ2RDE4RkRFNUQ2MDA1RDNBMDAgLyogQVBJ
Rm9ybUNsaWVudC5oICovLAogCQkJCTJERjlFRUUzMUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFt
ZUluZm8uY3BwICovLAogCQkJCTJERjlFRUU0MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUlu
Zm8uaCAqLywKKwkJCQk1QzEyMUU4QjI0MTAzMDY2MDA0ODZGOUIgLyogQVBJRnJhbWVUcmVlTm9k
ZS5jcHAgKi8sCisJCQkJNUMxMjFFODUyNDEwMjc2RjAwNDg2RjlCIC8qIEFQSUZyYW1lVHJlZU5v
ZGUuaCAqLywKIAkJCQlDRDc4RTExNjFEQjdEQzBBMDAxNEEyREUgLyogQVBJRnVsbHNjcmVlbkNs
aWVudC5oICovLAogCQkJCTdBQjZFQTQ2MUVFQUI2QjAwMDAzN0IyQiAvKiBBUElHZW9sb2NhdGlv
blByb3ZpZGVyLmggKi8sCiAJCQkJMkRBQkE3NzUxQTgyQjQyMTAwRUYwRjFBIC8qIEFQSUhpc3Rv
cnlDbGllbnQuaCAqLywKQEAgLTEwMTc4LDYgKzEwMTkyLDcgQEAKIAkJCQkzN0E2NEU1NzE4RjM4
RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzczRDEyMjMxOEE0NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzNzNEMTIyNzE4QTQ3M0Y2MDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGVJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUMxMjFFODkyNDEwMjlDOTAwNDg2RjlCIC8qIF9XS0Zy
YW1lVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENzhFMTE5MURCN0U1QUQwMDE0QTJE
RSAvKiBfV0tGdWxsc2NyZWVuRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzNjM1M0E1
MUU5ODU4REYwMDA5RjhBRiAvKiBfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2M0MzMkMyNjFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9j
YXRpb25Qb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDQyNyw2ICsxMDQ0Miw3IEBACiAJ
CQkJQkNFODFEOEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTE0RjhFMjFENzRDODM0MDA2Q0JFQzYgLyogRnJhbWVJbmZvRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFFMDBENjExODMxNzkyMTAwMDg3REQ3IC8qIEZyYW1lTG9hZFN0YXRlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1QzEyMUU4NDI0MTAyMDhEMDA0ODZGOUIgLyogRnJhbWVUcmVl
Tm9kZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEFGMDg5MjA0NEMzQzQwMDZDODgxNyAv
KiBGcm9udEJvYXJkU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENzhFMTE1MURC
N0Q3RUQwMDE0QTJERSAvKiBGdWxsc2NyZWVuQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDE5RDJFQTIwNDY0MDZGMDAxNzA3NEEgLyogRnVsbHNjcmVlblRvdWNoU2VjaGV1cmlzdGljLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU3ODM0KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdFT0xP
Q0FUSU9OKQogCisjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZS5oIgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNTc4
MzQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDEsMjIgKzk0MSwxNCBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAKICAgICBhdXRvKiByZXF1ZXN0
aW5nRnJhbWUgPSByZXF1ZXN0ZXIuZnJhbWVJRCgpID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUocmVxdWVzdGVyLmZyYW1lSUQoKSkgOiBudWxscHRyOwogICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdGcmFtZUlEOwotICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gcGFyZW50RnJhbWVJRDsKLSAgICBWZWN0b3I8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBjaGlsZEZyYW1lSURzOwotICAgIGlmIChyZXF1ZXN0aW5n
RnJhbWUpIHsKKyAgICBpZiAocmVxdWVzdGluZ0ZyYW1lKQogICAgICAgICBvcmlnaW5hdGluZ0Zy
YW1lSUQgPSByZXF1ZXN0aW5nRnJhbWUtPmZyYW1lSUQoKTsKLSAgICAgICAgY2hpbGRGcmFtZUlE
cyA9IHJlcXVlc3RpbmdGcmFtZS0+Y2hpbGRGcmFtZUlEcygpOwotICAgICAgICBpZiAoYXV0byog
cGFyZW50RnJhbWUgPSByZXF1ZXN0aW5nRnJhbWUtPnBhcmVudEZyYW1lKCkpCi0gICAgICAgICAg
ICBwYXJlbnRGcmFtZUlEID0gcGFyZW50RnJhbWUtPmZyYW1lSUQoKTsKLSAgICB9CiAKICAgICBG
cmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSB7CiAgICAgICAgIG5hdmlnYXRp
b25BY3Rpb24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSA9PSBJbml0aWF0ZWRCeU1haW5GcmFtZTo6
WWVzLAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0ZXIudXJsKCkgfSwKICAgICAg
ICAgcmVxdWVzdGVyLnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLAotICAgICAgICBXVEZNb3ZlKG9y
aWdpbmF0aW5nRnJhbWVJRCksCi0gICAgICAgIFdURk1vdmUocGFyZW50RnJhbWVJRCksCi0gICAg
ICAgIFdURk1vdmUoY2hpbGRGcmFtZUlEcykKKyAgICAgICAgV1RGTW92ZShvcmlnaW5hdGluZ0Zy
YW1lSUQpCiAgICAgfTsKIAogICAgIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlEOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMjU3ODM0KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsMjggKzE4
NiwxNCBAQCBXZWJGcmFtZSogV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoY29uc3QgCiAgICAgcmV0
dXJuIHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpOwogfQogCi1WZWN0b3I8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBXZWJGcmFtZTo6Y2hpbGRGcmFtZUlEcygpIGNvbnN0Ci17Ci0g
ICAgVmVjdG9yPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gaWRlbnRpZmllcnM7Ci0gICAgZm9y
IChhdXRvKiBjaGlsZEZyYW1lID0gbV9jb3JlRnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7IGNo
aWxkRnJhbWU7IGNoaWxkRnJhbWUgPSBjaGlsZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkg
ewotICAgICAgICBpZiAoYXV0byogY2hpbGRXZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZy
YW1lKCpjaGlsZEZyYW1lKSkKLSAgICAgICAgICAgIGlkZW50aWZpZXJzLmFwcGVuZChjaGlsZFdl
YkZyYW1lLT5mcmFtZUlEKCkpOwotICAgIH0KLSAgICByZXR1cm4gaWRlbnRpZmllcnM7Ci19Owot
CiBGcmFtZUluZm9EYXRhIFdlYkZyYW1lOjppbmZvKCkgY29uc3QKIHsKLSAgICBhdXRvKiBwYXJl
bnQgPSBwYXJlbnRGcmFtZSgpOwotCiAgICAgRnJhbWVJbmZvRGF0YSBpbmZvIHsKICAgICAgICAg
aXNNYWluRnJhbWUoKSwKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVs
bCByZXF1ZXN0LgogICAgICAgICBSZXNvdXJjZVJlcXVlc3QoVVJMKFVSTCgpLCB1cmwoKSkpLAog
ICAgICAgICBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShtX2NvcmVGcmFtZSksCi0gICAg
ICAgIG1fZnJhbWVJRCwKLSAgICAgICAgcGFyZW50ID8gT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiB7IHBhcmVudC0+ZnJhbWVJRCgpIH0gOiBXVEY6Om51bGxvcHQsCi0gICAgICAg
IGNoaWxkRnJhbWVJRHMoKQorICAgICAgICBtX2ZyYW1lSUQKICAgICB9OwogCiAgICAgcmV0dXJu
IGluZm87CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmgJKHJldmlzaW9uIDI1NzgzNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDYgQEAgcHVibGljOgogCiAg
ICAgRnJhbWVJbmZvRGF0YSBpbmZvKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KLSAgICBWZWN0b3I8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBjaGlsZEZyYW1lSURzKCkgY29uc3Q7CiAKICAgICBlbnVt
IGNsYXNzIEZvck5hdmlnYXRpb25BY3Rpb24geyBObywgWWVzIH07CiAgICAgdWludDY0X3Qgc2V0
VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24mJiwgRm9yTmF2aWdhdGlvbkFjdGlvbik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU3
ODM0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIu
aCIKICNpbmNsdWRlICJGaW5kQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJl
bmNlLmgiCisjaW5jbHVkZSAiRnJhbWVUcmVlTm9kZURhdGEuaCIKICNpbmNsdWRlICJHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluamVjdFVzZXJTY3Jp
cHRJbW1lZGlhdGVseS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCkBAIC0xNzQ4LDE0
ICsxNzQ5LDI2IEBAIFdlYlBhZ2UmIFdlYlBhZ2U6OmZyb21Db3JlUGFnZShQYWdlJiBwYWcKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ2hyb21lQ2xpZW50Jj4ocGFnZS5jaHJvbWUoKS5jbGll
bnQoKSkucGFnZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldEFsbEZyYW1lcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxGcmFtZUluZm9EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3N0YXRpYyBPcHRpb25hbDxGcmFtZVRyZWVOb2RlRGF0YT4gZnJhbWVUcmVlTm9kZURhdGEo
RnJhbWUmIGZyYW1lKQogewotICAgIFZlY3RvcjxGcmFtZUluZm9EYXRhPiBkYXRhOwotICAgIGZv
ciAoYXV0byogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBpZiAoYXV0byogd2ViRnJhbWUg
PSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpKQotICAgICAgICAgICAgZGF0YS5hcHBl
bmQod2ViRnJhbWUtPmluZm8oKSk7CisgICAgT3B0aW9uYWw8RnJhbWVUcmVlTm9kZURhdGE+IGlu
Zm87CisgICAgaWYgKGF1dG8qIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJh
bWUpKSB7CisgICAgICAgIFZlY3RvcjxGcmFtZVRyZWVOb2RlRGF0YT4gY2hpbGRyZW47CisgICAg
ICAgIGZvciAoYXV0byogY2hpbGRGcmFtZSA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNo
aWxkRnJhbWU7IGNoaWxkRnJhbWUgPSBjaGlsZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gY2hpbGRJbmZvID0gZnJhbWVUcmVlTm9kZURhdGEoKmNo
aWxkRnJhbWUpKQorICAgICAgICAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChXVEZNb3ZlKCpjaGls
ZEluZm8pKTsKKyAgICAgICAgfQorICAgICAgICBpbmZvID0gRnJhbWVUcmVlTm9kZURhdGEgewor
ICAgICAgICAgICAgd2ViRnJhbWUtPmluZm8oKSwKKyAgICAgICAgICAgIFdURk1vdmUoY2hpbGRy
ZW4pCisgICAgICAgIH07CiAgICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZGF0
YSkpOworICAgIHJldHVybiBpbmZvOworfQorCit2b2lkIFdlYlBhZ2U6OmdldEFsbEZyYW1lcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYW1lVHJlZU5vZGVEYXRhJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKCpmcmFtZVRyZWVOb2RlRGF0YShtX3Bh
Z2UtPm1haW5GcmFtZSgpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0U2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB2aWV3U2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI1NzgzNCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDYgKzI3OCw3
IEBAIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0Nv
bnRleHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q7CiBzdHJ1Y3QgRWRp
dG9yU3RhdGU7CitzdHJ1Y3QgRnJhbWVUcmVlTm9kZURhdGE7CiBzdHJ1Y3QgRm9udEluZm87CiBz
dHJ1Y3QgSW5zZXJ0VGV4dE9wdGlvbnM7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb247CkBAIC0xMjg4LDcgKzEyODksNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6QWxs
b3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2Vu
dE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJv
bU1vc3RSZWNlbnROYXZpZ2F0aW9uOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NDb250ZW50SmF2YVNj
cmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbihXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNj
cmlwdCBhbGxvd3MpIHsgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2
aWdhdGlvbiA9IGFsbG93czsgfQogCi0gICAgdm9pZCBnZXRBbGxGcmFtZXMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8RnJhbWVJbmZvRGF0YT4mJik+JiYpOworICAgIHZvaWQgZ2V0QWxs
RnJhbWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhbWVUcmVlTm9kZURhdGEmJik+JiYpOwog
CiAgICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluVGVzdGluZyhib29sLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbihOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKSB7IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW47IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU3ODM0KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW4KIAogICAgICMgQ2FsbGJhY2tzLgogICAgIEdldENvbnRlbnRzQXNT
dHJpbmcoZW51bTpib29sIFdlYktpdDo6Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1l
cyBpbkNoaWxkRnJhbWVzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBHZXRB
bGxGcmFtZXMoKSAtPiAoVmVjdG9yPFdlYktpdDo6RnJhbWVJbmZvRGF0YT4gZnJhbWVzKSBBc3lu
YworICAgIEdldEFsbEZyYW1lcygpIC0+IChzdHJ1Y3QgV2ViS2l0OjpGcmFtZVRyZWVOb2RlRGF0
YSBtYWluRnJhbWUpIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgR2V0Q29udGVudHNB
c0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYktpdDo6QXR0cmlidXRlZFN0cmluZyBy
ZXN1bHQpIEFzeW5jCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Nzg3MCkKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTA0ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV0tXZWJWaWV3J3MgZnJh
bWVzIGFjY2Vzc29yIHNob3VsZCByZXR1cm4gYSB0cmF2ZXJzYWJsZSB0eXBlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1OTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06CisKIDIwMjAtMDMtMDQgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gU1BJIHRv
IGFsbG93IFVzZXJTdHlsZVNoZWV0IGluamVjdGlvbiB0byB0YXJnZXQgYSBzcGVjaWZpYyBXS1dl
YlZpZXcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxT
Y2hlbWVIYW5kbGVyLTEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQkocmV2aXNpb24gMjU3ODM0KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRs
ZXItMS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRnJhbWVIYW5kbGUuaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tGcmFtZVRyZWVOb2RlLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMDE5LDQ0ICsxMDIw
LDY2IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRnJhbWVzKQogewogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CiAgICAgYXV0
byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7Ci0gICAgX19i
bG9jayBzaXplX3QgZnJhbWVzTG9hZGVkID0gMDsKKyAgICBfX2Jsb2NrIHNpemVfdCBncmFuZGNo
aWxkRnJhbWVzTG9hZGVkID0gMDsKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tI
YW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewogICAgICAg
ICBOU1N0cmluZyAqcmVzcG9uc2VTdHJpbmcgPSBuaWw7CiAgICAgICAgIGlmIChbdGFzay5yZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZTovL2hvc3QxLyJd
KQogICAgICAgICAgICAgcmVzcG9uc2VTdHJpbmcgPSBAIjxpZnJhbWUgc3JjPSdmcmFtZTovL2hv
c3QyLyc+PC9pZnJhbWU+IjsKICAgICAgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJz
b2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWU6Ly9ob3N0Mi8iXSkKLSAgICAgICAg
ICAgIHJlc3BvbnNlU3RyaW5nID0gQCI8aWZyYW1lIHNyYz0nZnJhbWU6Ly9ob3N0My8nPjwvaWZy
YW1lPjxpZnJhbWUgc3JjPSdmcmFtZTovL2hvc3Q0Lyc+PC9pZnJhbWU+IjsKKyAgICAgICAgICAg
IHJlc3BvbnNlU3RyaW5nID0gQCI8aWZyYW1lIHNyYz0nZnJhbWU6Ly9ob3N0My8nIG9ubG9hZD0n
ZmV0Y2goXCJsb2FkZWRHcmFuZGNoaWxkRnJhbWVcIiknPjwvaWZyYW1lPjxpZnJhbWUgc3JjPSdm
cmFtZTovL2hvc3Q0Lycgb25sb2FkPSdmZXRjaChcImxvYWRlZEdyYW5kY2hpbGRGcmFtZVwiKSc+
PC9pZnJhbWU+IjsKICAgICAgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVT
dHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWU6Ly9ob3N0My8iXSkKICAgICAgICAgICAgIHJl
c3BvbnNlU3RyaW5nID0gQCJmcmFtZSBjb250ZW50IjsKICAgICAgICAgZWxzZSBpZiAoW3Rhc2su
cmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWU6Ly9ob3N0
NC8iXSkKICAgICAgICAgICAgIHJlc3BvbnNlU3RyaW5nID0gQCJmcmFtZSBjb250ZW50IjsKKyAg
ICAgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIv
bG9hZGVkR3JhbmRjaGlsZEZyYW1lIl0pIHsKKyAgICAgICAgICAgIHJlc3BvbnNlU3RyaW5nID0g
QCJmZXRjaGVkIGNvbnRlbnQiOworICAgICAgICAgICAgKytncmFuZGNoaWxkRnJhbWVzTG9hZGVk
OworICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKHJlc3BvbnNlU3RyaW5nKTsKICAgICAgICAg
YXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6cmVzcG9uc2VTdHJpbmcubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CiAgICAg
ICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CiAgICAgICAgIFt0
YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZVN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwotICAgICAgICAr
K2ZyYW1lc0xvYWRlZDsKICAgICB9XTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiZnJhbWUiXTsKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJmcmFtZTovL2hvc3QxLyJdXV07CiAKLSAgICB3aGlsZSAoZnJh
bWVzTG9hZGVkIDwgNCkKKyAgICB3aGlsZSAoZ3JhbmRjaGlsZEZyYW1lc0xvYWRlZCA8IDIpCiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CiAgICAgCi0gICAgW3dl
YlZpZXcgX2FsbEZyYW1lczpeKE5TQXJyYXk8V0tGcmFtZUluZm8gKj4gKmZyYW1lcykgewotICAg
ICAgICBFWFBFQ1RfRVEoZnJhbWVzLmNvdW50LCBmcmFtZXNMb2FkZWQpOwotICAgICAgICBFWFBF
Q1RfTlVMTChmcmFtZXNbMF0uX3BhcmVudEZyYW1lSGFuZGxlKTsKLSAgICAgICAgRVhQRUNUX0VR
KGZyYW1lc1swXS5fY2hpbGRGcmFtZUhhbmRsZXMuY291bnQsIDF1KTsKLSAgICAgICAgRVhQRUNU
X0VRKGZyYW1lc1sxXS5fcGFyZW50RnJhbWVIYW5kbGUuZnJhbWVJRCwgZnJhbWVzWzBdLl9oYW5k
bGUuZnJhbWVJRCk7Ci0gICAgICAgIEVYUEVDVF9FUShmcmFtZXNbMV0uX2NoaWxkRnJhbWVIYW5k
bGVzLmNvdW50LCAydSk7Ci0gICAgICAgIEVYUEVDVF9FUShmcmFtZXNbMV0uX2NoaWxkRnJhbWVI
YW5kbGVzWzBdLmZyYW1lSUQsIGZyYW1lc1syXS5faGFuZGxlLmZyYW1lSUQpOwotICAgICAgICBF
WFBFQ1RfRVEoZnJhbWVzWzFdLl9jaGlsZEZyYW1lSGFuZGxlc1sxXS5mcmFtZUlELCBmcmFtZXNb
M10uX2hhbmRsZS5mcmFtZUlEKTsKLSAgICAgICAgRVhQRUNUX0VRKGZyYW1lc1syXS5fcGFyZW50
RnJhbWVIYW5kbGUuZnJhbWVJRCwgZnJhbWVzWzFdLl9oYW5kbGUuZnJhbWVJRCk7Ci0gICAgICAg
IEVYUEVDVF9OVUxMKGZyYW1lc1syXS5fY2hpbGRGcmFtZUhhbmRsZXMpOwotICAgICAgICBFWFBF
Q1RfRVEoZnJhbWVzWzNdLl9wYXJlbnRGcmFtZUhhbmRsZS5mcmFtZUlELCBmcmFtZXNbMV0uX2hh
bmRsZS5mcmFtZUlEKTsKLSAgICAgICAgRVhQRUNUX05VTEwoZnJhbWVzWzNdLl9jaGlsZEZyYW1l
SGFuZGxlcyk7CisgICAgW3dlYlZpZXcgX2ZyYW1lczpeKF9XS0ZyYW1lVHJlZU5vZGUgKm1haW5G
cmFtZSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEobWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2lu
Lmhvc3QsICJob3N0MSIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEobWFpbkZyYW1lLnJlcXVl
c3QuVVJMLmhvc3QsICJob3N0MSIpOworICAgICAgICBFWFBFQ1RfRVEobWFpbkZyYW1lLmNoaWxk
RnJhbWVzLmNvdW50LCAxdSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1haW5GcmFtZS5pc01haW5G
cmFtZSk7CisKKyAgICAgICAgX1dLRnJhbWVUcmVlTm9kZSAqY2hpbGQgPSBtYWluRnJhbWUuY2hp
bGRGcmFtZXNbMF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGlsZC5yZXF1ZXN0LlVSTC5o
b3N0LCAiaG9zdDIiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoaWxkLnNlY3VyaXR5T3Jp
Z2luLmhvc3QsICJob3N0MiIpOworICAgICAgICBFWFBFQ1RfRVEoY2hpbGQuY2hpbGRGcmFtZXMu
Y291bnQsIDJ1KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGNoaWxkLmlzTWFpbkZyYW1lKTsKKwor
ICAgICAgICBfV0tGcmFtZVRyZWVOb2RlICpncmFuZGNoaWxkMSA9IGNoaWxkLmNoaWxkRnJhbWVz
WzBdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZ3JhbmRjaGlsZDEucmVxdWVzdC5VUkwuaG9z
dCwgImhvc3QzIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShncmFuZGNoaWxkMS5zZWN1cml0
eU9yaWdpbi5ob3N0LCAiaG9zdDMiKTsKKyAgICAgICAgRVhQRUNUX0VRKGdyYW5kY2hpbGQxLmNo
aWxkRnJhbWVzLmNvdW50LCAwdSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShncmFuZGNoaWxkMS5p
c01haW5GcmFtZSk7CisKKyAgICAgICAgX1dLRnJhbWVUcmVlTm9kZSAqZ3JhbmRjaGlsZDIgPSBj
aGlsZC5jaGlsZEZyYW1lc1sxXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGdyYW5kY2hpbGQy
LnJlcXVlc3QuVVJMLmhvc3QsICJob3N0NCIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZ3Jh
bmRjaGlsZDIuc2VjdXJpdHlPcmlnaW4uaG9zdCwgImhvc3Q0Iik7CisgICAgICAgIEVYUEVDVF9F
UShncmFuZGNoaWxkMi5jaGlsZEZyYW1lcy5jb3VudCwgMHUpOworICAgICAgICBFWFBFQ1RfRkFM
U0UoZ3JhbmRjaGlsZDIuaXNNYWluRnJhbWUpOworCisgICAgICAgIEVYUEVDVF9ORShtYWluRnJh
bWUuX2hhbmRsZS5mcmFtZUlELCBjaGlsZC5faGFuZGxlLmZyYW1lSUQpOworICAgICAgICBFWFBF
Q1RfTkUobWFpbkZyYW1lLl9oYW5kbGUuZnJhbWVJRCwgZ3JhbmRjaGlsZDEuX2hhbmRsZS5mcmFt
ZUlEKTsKKyAgICAgICAgRVhQRUNUX05FKG1haW5GcmFtZS5faGFuZGxlLmZyYW1lSUQsIGdyYW5k
Y2hpbGQyLl9oYW5kbGUuZnJhbWVJRCk7CisgICAgICAgIEVYUEVDVF9ORShjaGlsZC5faGFuZGxl
LmZyYW1lSUQsIGdyYW5kY2hpbGQxLl9oYW5kbGUuZnJhbWVJRCk7CisgICAgICAgIEVYUEVDVF9O
RShjaGlsZC5faGFuZGxlLmZyYW1lSUQsIGdyYW5kY2hpbGQyLl9oYW5kbGUuZnJhbWVJRCk7Cisg
ICAgICAgIEVYUEVDVF9ORShncmFuZGNoaWxkMS5faGFuZGxlLmZyYW1lSUQsIGdyYW5kY2hpbGQy
Ll9oYW5kbGUuZnJhbWVJRCk7CisKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
</data>
<flag name="review"
          id="407877"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>