<?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>120209</bug_id>
          
          <creation_ts>2013-08-23 08:55:23 -0700</creation_ts>
          <short_desc>[EFL][WK2] Pasteboard API implementation</short_desc>
          <delta_ts>2017-03-11 10:44:52 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>102484</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michal Pakula vel Rutka">mpakulavelrutka</reporter>
          <assigned_to name="Michal Pakula vel Rutka">mpakulavelrutka</assigned_to>
          <cc>lucas.de.marchi</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>920237</commentid>
    <comment_count>0</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-08-23 08:55:23 -0700</bug_when>
    <thetext>This patch is a WebKit-EFL part of bug 102484.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920239</commentid>
    <comment_count>1</comment_count>
      <attachid>209465</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2013-08-23 08:59:07 -0700</bug_when>
    <thetext>Created attachment 209465
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015416</commentid>
    <comment_count>2</comment_count>
      <attachid>233048</attachid>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2014-06-13 07:31:28 -0700</bug_when>
    <thetext>Created attachment 233048
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286576</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-11 10:44:52 -0800</bug_when>
    <thetext>Closing this bug because the EFL port has been removed from trunk.

If you feel this bug applies to a different upstream WebKit port and was closed in error, please either update the title and reopen the bug, or leave a comment to request this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209465</attachid>
            <date>2013-08-23 08:59:07 -0700</date>
            <delta_ts>2014-06-13 07:31:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pasteboard-efl-api.diff</filename>
            <type>text/plain</type>
            <size>21332</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0YjFiNTU4Li45NmYwNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDAg
QEAKIDIwMTMtMDgtMjMgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIFBhc3RlYm9hcmQgQVBJIGltcGxlbWVudGF0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAy
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
RUZMIHBhc3RlYm9hcmQgQVBJIGV4dGVuZGluZyBXS0NvbnRleHRQYXN0ZWJvYXJkQ2xpZW50LCBh
bGxvd2luZworICAgICAgICBXZWJLaXQtRUZMIGJhc2VkIGFwcGxpY2F0aW9ucyB0byBpbXBsZW1l
bnQgY29weSBhbmQgcGFzdGUuCisgICAgICAgIFVuaXQgdGVzdCB3ZXJlIGFkZGVkIGZvciBuZXcg
QVBJIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKEV3a0NvbnRleHQ6
OkV3a0NvbnRleHQpOgorICAgICAgICAoRXdrQ29udGV4dDo6cGFzdGVib2FyZENsaWVudCk6Cisg
ICAgICAgIChld2tfY29udGV4dF9wYXN0ZWJvYXJkX2NhbGxiYWNrc19zZXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9wYXN0ZWJvYXJkLmNwcDogQWRkZWQuCisgICAgICAgIChwYXN0ZWJv
YXJkU3RyaW5nR2V0Q2IpOgorICAgICAgICAocGFzdGVib2FyZFN0cmluZ1NldENiKToKKyAgICAg
ICAgKHNob3dDb250ZXh0TWVudSk6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvUGFzdGVib2FyZENsaWVudEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
Ojp0b1Bhc3RlYm9hcmRDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3Rpb25Gb3Jt
YXRGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0aW9uVHlwZUZyb21TdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkQ2xpZW50RWZsOjpzdHJpbmdGb3JUeXBlKToK
KyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZENsaWVudEVmbDo6c2V0U3RyaW5nRm9yVHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRDbGllbnRFZmw6OlBhc3RlYm9hcmRDbGllbnRF
ZmwpOgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkQ2xpZW50RWZsOjp+UGFzdGVib2FyZENs
aWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRDbGllbnRFZmw6OnNldENhbGxi
YWNrcyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYXN0ZWJvYXJkQ2xpZW50RWZsLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkQ2xpZW50RWZsOjpjcmVhdGUpOgorCisy
MDEzLTA4LTIzICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5j
b20+CisKICAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnRhdGlvbiBvZiBwYXN0ZWJvYXJkCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI0ODQKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0ODk1ZTk4Li44ZWViMTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTE2LDYgKzExNiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9QYXN0ZWJv
YXJkQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckNsaWVudEVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcApAQCAtNDMxLDYgKzQzMiw3IEBAIHNldChF
V0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAgdGVzdF9ld2syX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
CiAgICAgdGVzdF9ld2syX29iamVjdAogICAgIHRlc3RfZXdrMl9wYWdlX2dyb3VwCisgICAgdGVz
dF9ld2syX3Bhc3RlYm9hcmQKICAgICB0ZXN0X2V3azJfcG9wdXBfbWVudQogICAgIHRlc3RfZXdr
Ml9yZWZwdHJfZXZhc19vYmplY3QKICAgICB0ZXN0X2V3azJfc2V0dGluZ3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCA3MTg5ZjZk
Li41ZmEwYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dEhpc3RvcnlD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXJFZmwuaCIKICNpbmNsdWRlICJO
ZXR3b3JrSW5mb1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZENsaWVudEVmbC5oIgog
I2luY2x1ZGUgIlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgpAQCAtNzIsNiArNzMsNyBAQCBFd2tDb250
ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogICAgICwgbV9kb3dubG9hZE1h
bmFnZXIoRG93bmxvYWRNYW5hZ2VyRWZsOjpjcmVhdGUoY29udGV4dCkpCiAgICAgLCBtX3JlcXVl
c3RNYW5hZ2VyQ2xpZW50KFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpjcmVhdGUoY29udGV4dCkp
CiAgICAgLCBtX2hpc3RvcnlDbGllbnQoQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmNyZWF0ZShj
b250ZXh0KSkKKyAgICAsIG1fcGFzdGVib2FyZENsaWVudChQYXN0ZWJvYXJkQ2xpZW50RWZsOjpj
cmVhdGUoY29udGV4dCkpCiB7CiAgICAgQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGNv
bnRleHRNYXAoKS5hZGQoY29udGV4dCwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTI1OSw2ICsyNjEsMTEgQEAgQ29udGV4dEhpc3RvcnlD
bGllbnRFZmwqIEV3a0NvbnRleHQ6Omhpc3RvcnlDbGllbnQoKQogICAgIHJldHVybiBtX2hpc3Rv
cnlDbGllbnQuZ2V0KCk7CiB9CiAKK1Bhc3RlYm9hcmRDbGllbnRFZmwqIEV3a0NvbnRleHQ6OnBh
c3RlYm9hcmRDbGllbnQoKQoreworICAgIHJldHVybiBtX3Bhc3RlYm9hcmRDbGllbnQuZ2V0KCk7
Cit9CisKIEV3a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpCiB7CiAgICAgcmV0
dXJuIEV3a0NvbnRleHQ6OmRlZmF1bHRDb250ZXh0KCk7CkBAIC0zNDUsMyArMzUyLDkgQEAgdm9p
ZCBld2tfY29udGV4dF9yZXNvdXJjZV9jYWNoZV9jbGVhcihFd2tfQ29udGV4dCogZXdrQ29udGV4
dCkKICAgICBpbXBsLT5jbGVhclJlc291cmNlQ2FjaGUoKTsKIH0KIAordm9pZCBld2tfY29udGV4
dF9wYXN0ZWJvYXJkX2NhbGxiYWNrc19zZXQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIEV3a19Q
YXN0ZWJvYXJkX1N0cmluZ19Gb3JfVHlwZV9HZXRfQ2Igc3RyaW5nR2V0Q2FsbGJhY2ssIEV3a19Q
YXN0ZWJvYXJkX1N0cmluZ19Gb3JfVHlwZV9TZXRfQ2Igc3RyaW5nU2V0Q2FsbGJhY2ssIHZvaWQq
IHVzZXJEYXRhKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a0NvbnRleHQs
IGV3a0NvbnRleHQsIGltcGwpOworCisgICAgaW1wbC0+cGFzdGVib2FyZENsaWVudCgpLT5zZXRD
YWxsYmFja3Moc3RyaW5nR2V0Q2FsbGJhY2ssIHN0cmluZ1NldENhbGxiYWNrLCB1c2VyRGF0YSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApp
bmRleCA1ZDQ0MGFhLi5lYzVkNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTc0LDYgKzc0LDMwIEBAIGVudW0gRXdrX0NhY2hlX01v
ZGVsIHsKIHR5cGVkZWYgZW51bSBFd2tfQ2FjaGVfTW9kZWwgRXdrX0NhY2hlX01vZGVsOwogCiAv
KioKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc2V0IHNlbGVjdGlvbiBmb3JtYXRzLgorICovCitl
bnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQgeworICAgIEVXS19QQVNURUJPQVJE
X1NFTEVDVElPTl9GT1JNQVRfVU5LTk9XTiwKKyAgICBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05f
Rk9STUFUX1RFWFQsCisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX0ZPUk1BVF9IVE1MLAor
fTsKKworLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBFd2tfUGFzdGVib2FyZF9TZWxl
Y3Rpb25fRm9ybWF0LgordHlwZWRlZiBlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3Jt
YXQgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdDsKKworLyoqCisgKiBFbnVtIHZhbHVl
cyB1c2VkIHRvIHNldCBzZWxlY3Rpb24gdHlwZXMuCisgKi8KK2VudW0gRXdrX1Bhc3RlYm9hcmRf
U2VsZWN0aW9uX1R5cGUgeworICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9UWVBFX1VOS05P
V04sCisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfUFJJTUFSWSwKKyAgICBFV0tf
UEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9DTElQQk9BUkQKK307CisKKy8vLyBDcmVhdGVzIGEg
dHlwZSBuYW1lIGZvciB0aGUgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUuCit0eXBlZGVm
IGVudW0gRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0
aW9uX1R5cGU7CisKKy8qKgogICogQHR5cGVkZWYgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiCiAgKiBAYnJpZWYgQ2FsbGJhY2sgdHlwZSBmb3IgdXNl
IHdpdGggZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZWdpc3RlcigpLgogICovCkBAIC0xMTIsNiAr
MTM2LDI4IEBAIHR5cGVkZWYgdm9pZCAoKkV3a19IaXN0b3J5X1RpdGxlX1VwZGF0ZV9DYikoY29u
c3QgRXZhc19PYmplY3QgKnZpZXcsIGNvbnN0IGNoYXIKIHR5cGVkZWYgdm9pZCAoKkV3a19IaXN0
b3J5X1BvcHVsYXRlX1Zpc2l0ZWRfTGlua3NfQ2IpKHZvaWQgKnVzZXJfZGF0YSk7CiAKIC8qKgor
ICogRGVmaW5lcyBhIHR5cGUgbmFtZSBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHJlcXVl
c3QgZGF0YSB3aXRoIGdpdmVuIHR5cGUuCisgKgorICogUmV0dXJucyBkYXRhIGZyb20gdGhlIGNs
aXBib2FyZCBmb3IgcmVxdWVzdGVkIHR5cGUuCisgKgorICogQHBhcmFtIGZvcm1hdCBmb3JtYXQg
b2YgcmVxdWVzdGVkIGRhdGEKKyAqIEBwYXJhbSB0eXBlIHR5cGUgb2YgcmVxdWVzdGVkIGRhdGEK
KyAqIEBwYXJhbSBjbGllbnRfaW5mbyBhcHBsaWNhdGlvbiBzcGVjaWZpYyBkYXRhCisgKgorICog
QHJldHVybiBkYXRhIG9uIHN1Y2Nlc3Mgb3IgQGMgTlVMTCBvbiBmYWlsdXJlIGlmIHRoZXJlIGlz
IG5vIGRhdGEgaW4gY2xpcGJvYXJkIGZvciByZXF1ZXN0ZWQgdHlwZSBvciBvbiBmYWlsdXJlCisg
Ki8KK3R5cGVkZWYgY29uc3QgY2hhciAqKCpFd2tfUGFzdGVib2FyZF9TdHJpbmdfRm9yX1R5cGVf
R2V0X0NiKShFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IGZvcm1hdCwgRXdrX1Bhc3Rl
Ym9hcmRfU2VsZWN0aW9uX1R5cGUgdHlwZSwgdm9pZCAqdXNlcl9kYXRhKTsKKworLyoqCisgKiBE
ZWZpbmVzIGEgdHlwZSBuYW1lIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcGVyZm9ybSBj
b3B5IG9wZXJhdGlvbiB3aXRoIGdpdmVuIGRhdGEgdHlwZS4KKyAqCisgKiBAcGFyYW0gc3RyaW5n
IGRhdGEgdG8gYmUgY29waWVkCisgKiBAcGFyYW0gZm9ybWF0IGZvcm1hdCBvZiBjb3BpZWQgZGF0
YQorICogQHBhcmFtIHR5cGUgdHlwZSBvZiBjb3BpZWQgZGF0YQorICogQHBhcmFtIGNsaWVudF9p
bmZvIGFwcGxpY2F0aW9uIHNwZWNpZmljIGRhdGEKKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX1Bh
c3RlYm9hcmRfU3RyaW5nX0Zvcl9UeXBlX1NldF9DYikoY29uc3QgY2hhciAqc3RyaW5nLCBFd2tf
UGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IGZvcm1hdCwgRXdrX1Bhc3RlYm9hcmRfU2VsZWN0
aW9uX1R5cGUgdHlwZSwgdm9pZCAqdXNlcl9kYXRhKTsKKy8qKgogICogR2V0cyBkZWZhdWx0IEV3
a19Db250ZXh0IGluc3RhbmNlLgogICoKICAqIFRoZSByZXR1cm5lZCBFd2tfQ29udGV4dCBvYmpl
Y3QgQGIgc2hvdWxkIG5vdCBiZSB1bnJlZidlZCBpZiBhcHBsaWNhdGlvbgpAQCAtMzE5LDYgKzM2
NSwxNiBAQCBFQVBJIEVpbmFfQm9vbCBld2tfY29udGV4dF9hZGRpdGlvbmFsX3BsdWdpbl9wYXRo
X3NldChFd2tfQ29udGV4dCAqY29udGV4dCwgY29ucwogICovCiBFQVBJIHZvaWQgZXdrX2NvbnRl
eHRfcmVzb3VyY2VfY2FjaGVfY2xlYXIoRXdrX0NvbnRleHQgKmNvbnRleHQpOwogCisvKioKKyAq
IFNldHMgcGFzdGVib2FyZCBjYWxsYmFja3MgZm9yIGdpdmVuIGNvbnRleHQuCisgKgorICogQHBh
cmFtIGNvbnRleHQgb2JqZWN0IHRvIHNldCBwYXN0ZWJvYXJkIGNhbGxiYWNrcworICogQHBhcmFt
IGdldF9jYiBnZXQgZGF0YSBjYWxsYmFjayB0byBiZSBzZXQgLSBpdCBtdXN0IG5vdCBiZSBAYyBO
VUxMCisgKiBAcGFyYW0gc2V0X2NiIHNldCBkYXRhIGNhbGxiYWNrIHRvIGJlIHNldCAtIGl0IG11
c3Qgbm90IGJlIEBjIE5VTEwKKyAqIEBwYXJhbSBkYXRhIGFwcGxpY2F0aW9uIGRhdGEgcG9pbnRl
ciB0byBiZSByZXR1cm5lZCBieSBjYWxsYmFjayBmdW5jdGlvbnMKKyAqLworRUFQSSB2b2lkIGV3
a19jb250ZXh0X3Bhc3RlYm9hcmRfY2FsbGJhY2tzX3NldChFd2tfQ29udGV4dCAqY29udGV4dCwg
RXdrX1Bhc3RlYm9hcmRfU3RyaW5nX0Zvcl9UeXBlX0dldF9DYiBnZXRfc3RyaW5nX2NiLCBFd2tf
UGFzdGVib2FyZF9TdHJpbmdfRm9yX1R5cGVfU2V0X0NiIHNldF9zdHJpbmdfY2IsIHZvaWQgKmRh
dGEpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCmluZGV4IGRi
MTk4MDkuLmNlYWZkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgRXdr
RmF2aWNvbkRhdGFiYXNlOwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBDb250ZXh0SGlzdG9y
eUNsaWVudEVmbDsKIGNsYXNzIERvd25sb2FkTWFuYWdlckVmbDsKK2NsYXNzIFBhc3RlYm9hcmRD
bGllbnRFZmw7CiBjbGFzcyBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDsKICNpZiBFTkFCTEUoQkFU
VEVSWV9TVEFUVVMpCiBjbGFzcyBCYXR0ZXJ5UHJvdmlkZXI7CkBAIC04MCw2ICs4MSw4IEBAIHB1
YmxpYzoKIAogICAgIFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmwqIGhpc3RvcnlDbGll
bnQoKTsKIAorICAgIFdlYktpdDo6UGFzdGVib2FyZENsaWVudEVmbCogcGFzdGVib2FyZENsaWVu
dCgpOworCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgdm9pZCBzZXRBZGRp
dGlvbmFsUGx1Z2luUGF0aChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpAQCAtMTA3LDYgKzExMCw3
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+
IG1fcmVxdWVzdE1hbmFnZXJDbGllbnQ7CiAKICAgICBPd25QdHI8V2ViS2l0OjpDb250ZXh0SGlz
dG9yeUNsaWVudEVmbD4gbV9oaXN0b3J5Q2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6OlBhc3Rl
Ym9hcmRDbGllbnRFZmw+IG1fcGFzdGVib2FyZENsaWVudDsKIH07CiAKICNlbmRpZiAvLyBld2tf
Y29udGV4dF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9wYXN0ZWJvYXJkLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDkzOTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3Bhc3RlYm9hcmQu
Y3BwCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICog
QGJyaWVmIGNvdmVycyBwYXN0ZWJvYXJkIEFQSSBmcm9tIGV3a19jb250ZXh0LmgKKyAqIEBmaWxl
IHRlc3RfZXdrMl9wYXN0ZWJvYXJkLmNwcAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oIgorI2luY2x1ZGUgPEVX
ZWJLaXQyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2YXRlLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1
c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitzdGF0aWMgYm9vbCB0ZXN0RmluaXNoZWQg
PSBmYWxzZTsKKworc3RhdGljIGNvbnN0IGNoYXIqIHRlc3RJbnB1dFZhbHVlID0gIlRFU1QiOwor
c3RhdGljIGNvbnN0IGNoYXIqIHRlc3RDbGllbnRJbmZvID0gIkNMSUVOVF9JTkZPIjsKK3N0YXRp
YyBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIHRlc3RTZWxlY3RJdGVtID0gRVdLX0NPTlRF
WFRfTUVOVV9JVEVNX1RBR19OT19BQ1RJT047CisKK3N0YXRpYyBjb25zdCBjaGFyKiBwYXN0ZWJv
YXJkU3RyaW5nR2V0Q2IoRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdCBmb3JtYXQsIEV3
a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHR5cGUsIHZvaWQqIHVzZXJEYXRhKQoreworICAg
IGNvbnN0IGNoYXIqIGluZm8gPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odXNlckRhdGEpOwor
CisgICAgLy8gQ2hlY2sgaWYgcHJvcGVyIGNsaWVudCBpbmZvIHdhcyByZWNlaXZlZC4KKyAgICBF
WFBFQ1RfU1RSRVEoaW5mbywgdGVzdENsaWVudEluZm8pOworCisgICAgcmV0dXJuIHRlc3RJbnB1
dFZhbHVlOworfQorCitzdGF0aWMgdm9pZCBwYXN0ZWJvYXJkU3RyaW5nU2V0Q2IoY29uc3QgY2hh
ciogc3RyaW5nLCBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IGZvcm1hdCwgRXdrX1Bh
c3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUgdHlwZSwgdm9pZCogdXNlckRhdGEpCit7CisgICAgY29u
c3QgY2hhciogaW5mbyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih1c2VyRGF0YSk7CisKKyAg
ICAvLyBDaGVjayBpZiBwcm9wZXIgY2xpZW50IGluZm8gd2FzIHJlY2VpdmVkLgorICAgIEVYUEVD
VF9TVFJFUShpbmZvLCB0ZXN0Q2xpZW50SW5mbyk7CisKKyAgICAvLyBDaGVjayBpZiBwcm9wZXIg
ZGF0YSB3YXMgY29waWVkLiBJbmNvbWluZyBkYXRhIG5lZWRzIHRvIGJlIHN0cmlwcGVkIGZyb20g
SFRNTCB0YWdzLgorICAgIEVYUEVDVF9TVFJFUShldmFzX3RleHRibG9ja190ZXh0X21hcmt1cF90
b191dGY4KDAsIHN0cmluZyksIHRlc3RJbnB1dFZhbHVlKTsKK30KKworc3RhdGljIEVpbmFfQm9v
bCBzaG93Q29udGV4dE1lbnUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFdmFzX0Nv
b3JkIHgsIEV2YXNfQ29vcmQgeSwgRXdrX0NvbnRleHRfTWVudSogY29udGV4dE1lbnUpCit7Cisg
ICAgY29uc3QgRWluYV9MaXN0KiBtZW51SXRlbXMgPSBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dl
dChjb250ZXh0TWVudSk7CisgICAgRVhQRUNUX0dUKGVpbmFfbGlzdF9jb3VudChtZW51SXRlbXMp
LCAwKTsKKworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdEl0ZXJhdG9yOworICAgIHZvaWQqIGRh
dGE7CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobWVudUl0ZW1zLCBsaXN0SXRlcmF0b3IsIGRhdGEp
IHsKKyAgICAgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdr
X0NvbnRleHRfTWVudV9JdGVtKj4oZGF0YSk7CisgICAgICAgIGlmIChld2tfY29udGV4dF9tZW51
X2l0ZW1fYWN0aW9uX2dldChpdGVtKSA9PSB0ZXN0U2VsZWN0SXRlbSkKKyAgICAgICAgICAgIGV3
a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoY29udGV4dE1lbnUsIGl0ZW0pOworICAgIH0KKwor
ICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLyoqCisg
KiBUZXN0IHdoZXRoZXIgY2FsbGJhY2tzIHNldCBieSBld2tfcGFzdGVib2FyZF9pbml0aWFsaXpl
OiBFd2tfUGFzdGVib2FyZF9EYXRhX1NldF9DYiBhbmQgRXdrX1Bhc3RlYm9hcmRfRGF0YV9HZXRf
Q2IKKyAqIGFyZSBjYWxsZWQgd2hlbiBjb250ZXh0IG1lbnUgaXRlbXMgIkNvcHkiIGFuZCAiUGFz
dGUiIGFyZSBzZWxlY3RlZC4KKyAqLworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYXN0
ZWJvYXJkX2luaXRpYWxpemUpCit7CisgICAgY29uc3QgY2hhciogcGFzdGVib2FyZEhUTUwgPSAi
PGh0bWw+PGJvZHk+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJ0ZXN0XCI+PC9ib2R5PjwvaHRt
bD4iOworCisgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZCh3ZWJWaWV3KCksIHBhc3RlYm9h
cmRIVE1MLCAiZmlsZTovLy8iLCAwKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxMb2FkRmlu
aXNoZWQoKSk7CisKKyAgICBld2tfY29udGV4dF9wYXN0ZWJvYXJkX2NhbGxiYWNrc19zZXQoZXdr
X3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKSwgcGFzdGVib2FyZFN0cmluZ0dldENiLCBwYXN0
ZWJvYXJkU3RyaW5nU2V0Q2IsICh2b2lkKil0ZXN0Q2xpZW50SW5mbyk7CisKKyAgICBld2tWaWV3
Q2xhc3MoKS0+Y29udGV4dF9tZW51X3Nob3cgPSBzaG93Q29udGV4dE1lbnU7CisKKyAgICB0ZXN0
RmluaXNoZWQgPSBmYWxzZTsKKyAgICB0ZXN0U2VsZWN0SXRlbSA9IEVXS19DT05URVhUX01FTlVf
SVRFTV9UQUdfUEFTVEU7CisgICAgbW91c2VDbGljaygzMCwgMjAsIDMpOworICAgIEFTU0VSVF9U
UlVFKHdhaXRVbnRpbFRydWUodGVzdEZpbmlzaGVkKSk7CisKKyAgICB0ZXN0RmluaXNoZWQgPSBm
YWxzZTsKKyAgICB0ZXN0U2VsZWN0SXRlbSA9IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VM
RUNUX0FMTDsKKyAgICBtb3VzZUNsaWNrKDMwLCAyMCwgMyk7CisgICAgQVNTRVJUX1RSVUUod2Fp
dFVudGlsVHJ1ZSh0ZXN0RmluaXNoZWQpKTsKKworICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwor
ICAgIHRlc3RTZWxlY3RJdGVtID0gRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZOworICAg
IG1vdXNlQ2xpY2soMzAsIDIwLCAzKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKHRl
c3RGaW5pc2hlZCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9QYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFzdGVib2FyZENsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNmZlY2NiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFzdGVib2FyZENsaWVudEVmbC5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkQ2xpZW50RWZsLmgiCisKKyNpbmNsdWRl
ICJXS0NvbnRleHQuaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRl
ICJXS1N0cmluZy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRWZsUGFzdGVib2FyZFV0aWxpdGllcy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyBpbmxpbmUgUGFzdGVib2FyZENsaWVudEVmbCogdG9QYXN0ZWJvYXJkQ2xpZW50RWZs
KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhc3Rl
Ym9hcmRDbGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK3N0
YXRpYyBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IHNlbGVjdGlvbkZvcm1hdEZyb21T
dHJpbmcoV0tTdHJpbmdSZWYgc2VsZWN0aW9uRm9ybWF0KQoreworICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKHNlbGVjdGlvbkZvcm1hdCwgV2ViQ29yZTo6c2VsZWN0aW9uRm9y
bWF0VGV4dC51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIEVXS19QQVNURUJPQVJEX1NF
TEVDVElPTl9GT1JNQVRfVEVYVDsKKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHNlbGVjdGlvbkZvcm1hdCwgV2ViQ29yZTo6c2VsZWN0aW9uRm9ybWF0TWFya3VwLnV0Zjgo
KS5kYXRhKCkpKQorICAgICAgICByZXR1cm4gRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX0ZPUk1B
VF9IVE1MOworCisgICAgcmV0dXJuIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfVU5L
Tk9XTjsKK30KKworc3RhdGljIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHNlbGVjdGlv
blR5cGVGcm9tU3RyaW5nKFdLU3RyaW5nUmVmIHNlbGVjdGlvblR5cGUpCit7CisgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc2VsZWN0aW9uVHlwZSwgV2ViQ29yZTo6c2VsZWN0
aW9uVHlwZVByaW1hcnkudXRmOCgpLmRhdGEoKSkpCisgICAgICAgIHJldHVybiBFV0tfUEFTVEVC
T0FSRF9TRUxFQ1RJT05fVFlQRV9QUklNQVJZOworCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoc2VsZWN0aW9uVHlwZSwgV2ViQ29yZTo6c2VsZWN0aW9uVHlwZUNsaXBib2Fy
ZC51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuIEVXS19QQVNURUJPQVJEX1NFTEVDVElP
Tl9UWVBFX0NMSVBCT0FSRDsKKworICAgIHJldHVybiBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05f
VFlQRV9VTktOT1dOOworfQorCitXS1N0cmluZ1JlZiBQYXN0ZWJvYXJkQ2xpZW50RWZsOjpzdHJp
bmdGb3JUeXBlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgcGFzdGVib2FyZFR5cGUsIFdLU3Ry
aW5nUmVmIHBhc3RlYm9hcmROYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGNv
bnN0IFBhc3RlYm9hcmRDbGllbnRFZmwqIHBhc3RlYm9hcmRDbGllbnQgPSB0b1Bhc3RlYm9hcmRD
bGllbnRFZmwoY2xpZW50SW5mbyk7CisKKyAgICBpZiAoIXBhc3RlYm9hcmRDbGllbnQtPm1fc3Ry
aW5nRm9yVHlwZUdldENhbGxiYWNrKQorICAgICAgICByZXR1cm4gV0tTdHJpbmdSZWYoKTsKKwor
ICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwYXN0ZWJvYXJkQ2xpZW50
LT5tX3N0cmluZ0ZvclR5cGVHZXRDYWxsYmFjayhzZWxlY3Rpb25Gb3JtYXRGcm9tU3RyaW5nKHBh
c3RlYm9hcmRUeXBlKSwgc2VsZWN0aW9uVHlwZUZyb21TdHJpbmcocGFzdGVib2FyZE5hbWUpLCBw
YXN0ZWJvYXJkQ2xpZW50LT5tX3VzZXJEYXRhKSk7Cit9CisKK3ZvaWQgUGFzdGVib2FyZENsaWVu
dEVmbDo6c2V0U3RyaW5nRm9yVHlwZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHdrU3RyaW5n
LCBXS1N0cmluZ1JlZiBwYXN0ZWJvYXJkVHlwZSwgV0tTdHJpbmdSZWYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgY29uc3QgUGFzdGVib2FyZENsaWVudEVm
bCogcGFzdGVib2FyZENsaWVudCA9IHRvUGFzdGVib2FyZENsaWVudEVmbChjbGllbnRJbmZvKTsK
KworICAgIGlmICghcGFzdGVib2FyZENsaWVudC0+bV9zdHJpbmdGb3JUeXBlU2V0Q2FsbGJhY2sp
CisgICAgICAgIHJldHVybjsKKworICAgIFdLRWluYVNoYXJlZFN0cmluZyBzdHJpbmcod2tTdHJp
bmcpOworCisgICAgcGFzdGVib2FyZENsaWVudC0+bV9zdHJpbmdGb3JUeXBlU2V0Q2FsbGJhY2so
c3RyaW5nLCBzZWxlY3Rpb25Gb3JtYXRGcm9tU3RyaW5nKHBhc3RlYm9hcmRUeXBlKSwgc2VsZWN0
aW9uVHlwZUZyb21TdHJpbmcocGFzdGVib2FyZE5hbWUpLCBwYXN0ZWJvYXJkQ2xpZW50LT5tX3Vz
ZXJEYXRhKTsKK30KKworUGFzdGVib2FyZENsaWVudEVmbDo6UGFzdGVib2FyZENsaWVudEVmbChX
S0NvbnRleHRSZWYgY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV91
c2VyRGF0YSgwKQorICAgICwgbV9zdHJpbmdGb3JUeXBlR2V0Q2FsbGJhY2soMCkKKyAgICAsIG1f
c3RyaW5nRm9yVHlwZVNldENhbGxiYWNrKDApCit7CisgICAgV0tDb250ZXh0UGFzdGVib2FyZENs
aWVudCB3a1Bhc3RlYm9hcmRDbGllbnQ7CisgICAgbWVtc2V0KCZ3a1Bhc3RlYm9hcmRDbGllbnQs
IDAsIHNpemVvZihXS0NvbnRleHRQYXN0ZWJvYXJkQ2xpZW50KSk7CisKKyAgICB3a1Bhc3RlYm9h
cmRDbGllbnQudmVyc2lvbiA9IGtXS0NvbnRleHRQYXN0ZWJvYXJkQ2xpZW50Q3VycmVudFZlcnNp
b247CisgICAgd2tQYXN0ZWJvYXJkQ2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgIHdrUGFz
dGVib2FyZENsaWVudC5zdHJpbmdGb3JUeXBlID0gc3RyaW5nRm9yVHlwZTsKKyAgICB3a1Bhc3Rl
Ym9hcmRDbGllbnQuc2V0U3RyaW5nRm9yVHlwZSA9IHNldFN0cmluZ0ZvclR5cGU7CisKKyAgICBX
S0NvbnRleHRTZXRQYXN0ZWJvYXJkQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgJndrUGFzdGVib2Fy
ZENsaWVudCk7Cit9CisKK1Bhc3RlYm9hcmRDbGllbnRFZmw6On5QYXN0ZWJvYXJkQ2xpZW50RWZs
KCkKK3sKK30KKwordm9pZCBQYXN0ZWJvYXJkQ2xpZW50RWZsOjpzZXRDYWxsYmFja3MoRXdrX1Bh
c3RlYm9hcmRfU3RyaW5nX0Zvcl9UeXBlX0dldF9DYiBzdHJpbmdGb3JUeXBlR2V0Q2FsbGJhY2ss
IEV3a19QYXN0ZWJvYXJkX1N0cmluZ19Gb3JfVHlwZV9TZXRfQ2Igc3RyaW5nRm9yVHlwZVNldENh
bGxiYWNrLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBtX3N0cmluZ0ZvclR5cGVHZXRDYWxsYmFj
ayA9IHN0cmluZ0ZvclR5cGVHZXRDYWxsYmFjazsKKyAgICBtX3N0cmluZ0ZvclR5cGVTZXRDYWxs
YmFjayA9IHN0cmluZ0ZvclR5cGVTZXRDYWxsYmFjazsKKyAgICBtX3VzZXJEYXRhID0gdXNlckRh
dGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9QYXN0ZWJvYXJkQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1Bhc3RlYm9hcmRDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi45NTYxMmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYXN0ZWJvYXJkQ2xpZW50RWZsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBQYXN0ZWJvYXJkQ2xpZW50RWZsX2gKKyNkZWZpbmUgUGFzdGVib2FyZENsaWVudEVm
bF9oCisKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXN0ZWJvYXJkQ2xpZW50
RWZsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYXN0ZWJvYXJkQ2xpZW50RWZs
PiBjcmVhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFBhc3RlYm9hcmRDbGllbnRFZmwoY29udGV4dCkpOworICAgIH0KKworICAgIH5Q
YXN0ZWJvYXJkQ2xpZW50RWZsKCk7CisKKyAgICB2b2lkIHNldENhbGxiYWNrcyhFd2tfUGFzdGVi
b2FyZF9TdHJpbmdfRm9yX1R5cGVfR2V0X0NiLCBFd2tfUGFzdGVib2FyZF9TdHJpbmdfRm9yX1R5
cGVfU2V0X0NiLCB2b2lkKiB1c2VyRGF0YSk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUGFz
dGVib2FyZENsaWVudEVmbChXS0NvbnRleHRSZWYpOworCisgICAgc3RhdGljIFdLU3RyaW5nUmVm
IHN0cmluZ0ZvclR5cGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBwYXN0ZWJvYXJkVHlwZSwg
V0tTdHJpbmdSZWYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAg
IHN0YXRpYyB2b2lkIHNldFN0cmluZ0ZvclR5cGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiwg
V0tTdHJpbmdSZWYgcGFzdGVib2FyZFR5cGUsIFdLU3RyaW5nUmVmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4g
bV9jb250ZXh0OworCisgICAgdm9pZCogbV91c2VyRGF0YTsKKyAgICBFd2tfUGFzdGVib2FyZF9T
dHJpbmdfRm9yX1R5cGVfR2V0X0NiIG1fc3RyaW5nRm9yVHlwZUdldENhbGxiYWNrOworICAgIEV3
a19QYXN0ZWJvYXJkX1N0cmluZ19Gb3JfVHlwZV9TZXRfQ2IgbV9zdHJpbmdGb3JUeXBlU2V0Q2Fs
bGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBhc3RlYm9h
cmRDbGllbnRFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233048</attachid>
            <date>2014-06-13 07:31:28 -0700</date>
            <delta_ts>2014-06-13 07:31:28 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>pasteboardapi.diff</filename>
            <type>text/plain</type>
            <size>21581</size>
            <attacher name="Michal Pakula vel Rutka">mpakulavelrutka</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiYTNlMGFkLi4wNGRkYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTQtMDYtMTIgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1z
dW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFBhc3RlYm9hcmQgQVBJIGltcGxlbWVudGF0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAy
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
RUZMIHBhc3RlYm9hcmQgQVBJIGV4dGVuZGluZyBXS0NvbnRleHRQYXN0ZWJvYXJkQ2xpZW50LCBh
bGxvd2luZworICAgICAgICBXZWJLaXQtRUZMIGJhc2VkIGFwcGxpY2F0aW9ucyB0byBpbXBsZW1l
bnQgY29weSBhbmQgcGFzdGUuCisgICAgICAgIFVuaXQgdGVzdCB3ZXJlIGFkZGVkIGZvciBuZXcg
QVBJIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKEV3a0NvbnRleHQ6
OkV3a0NvbnRleHQpOgorICAgICAgICAoRXdrQ29udGV4dDo6cGFzdGVib2FyZENsaWVudCk6Cisg
ICAgICAgIChld2tfY29udGV4dF9wYXN0ZWJvYXJkX2NhbGxiYWNrc19zZXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9wYXN0ZWJvYXJkLmNwcDogQWRkZWQuCisgICAgICAgIChyZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAod3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQpOgor
ICAgICAgICAoc2hvd0NvbnRleHRNZW51KToKKyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9QYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OnRvUGFzdGVib2FyZENsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OnNlbGVjdGlv
bkZvcm1hdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3Rpb25UeXBlRnJvbVN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRDbGllbnRFZmw6OnJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRDbGllbnRFZmw6Ondy
aXRlU3RyaW5nVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZENsaWVu
dEVmbDo6UGFzdGVib2FyZENsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRD
bGllbnRFZmw6On5QYXN0ZWJvYXJkQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVi
b2FyZENsaWVudEVmbDo6c2V0Q2FsbGJhY2tzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Bh
c3RlYm9hcmRDbGllbnRFZmwuaDogQWRkZWQuCisKIDIwMTQtMDYtMTIgIEJlbmphbWluIFBvdWxh
aW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV0syXSBEbyBub3QgdXBk
YXRlIHRoZSB2aWV3cG9ydCBjb25maWd1cmF0aW9uIG9uIGxvYWQgdW50aWwgdGhlIGZpcnN0IHZp
ZXdwb3J0IGFyZ3VtZW50cyBpcyByZWNlaXZlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBkNmVkODNlLi44MTA5MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTQ2LDYg
KzE0Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwv
UGFnZVBvbGljeUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVm
bC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwu
Y3BwCisgICAgVUlQcm9jZXNzL2VmbC9QYXN0ZWJvYXJkQ2xpZW50RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9U
ZXh0Q2hlY2tlckNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZs
LmNwcApAQCAtNDc5LDYgKzQ4MCw3IEBAIHNldChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCiAgICAg
dGVzdF9ld2syX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0CiAgICAgdGVzdF9ld2syX29iamVjdAogICAg
IHRlc3RfZXdrMl9wYWdlX2dyb3VwCisgICAgdGVzdF9ld2syX3Bhc3RlYm9hcmQKICAgICB0ZXN0
X2V3azJfcG9wdXBfbWVudQogICAgIHRlc3RfZXdrMl9yZWZwdHJfZXZhc19vYmplY3QKICAgICB0
ZXN0X2V3azJfc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcAppbmRleCA0NDhjNmE0Li4yNWFjZjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0yNCw2ICsyNCw3
IEBACiAjaW5jbHVkZSAiQmF0dGVyeVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQ29udGV4dEhpc3Rv
cnlDbGllbnRFZmwuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXJFZmwuaCIKKyNpbmNsdWRl
ICJQYXN0ZWJvYXJkQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRl
LmgiCkBAIC03Myw2ICs3NCw3IEBAIEV3a0NvbnRleHQ6OkV3a0NvbnRleHQoV0tDb250ZXh0UmVm
IGNvbnRleHQpCiAgICAgLCBtX2Rvd25sb2FkTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPERvd25s
b2FkTWFuYWdlckVmbD4oY29udGV4dCkpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+KGNvbnRleHQpKQogICAgICwg
bV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dEhpc3RvcnlDbGllbnRFZmw+
KGNvbnRleHQpKQorICAgICwgbV9wYXN0ZWJvYXJkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFz
dGVib2FyZENsaWVudEVmbD4oY29udGV4dCkpCiAgICAgLCBtX2pzR2xvYmFsQ29udGV4dChudWxs
cHRyKQogewogICAgIENvbnRleHRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBjb250ZXh0TWFwKCku
YWRkKGNvbnRleHQsIHRoaXMpOwpAQCAtNDI0LDYgKzQyNiwxMSBAQCB2b2lkIEV3a0NvbnRleHQ6
OnNldElnbm9yZVRMU0Vycm9ycyhFd2tfVExTX0Vycm9yX1BvbGljeSBUTFNFcnJvclBvbGljeSkg
Y29uc3QKICAgICB0b0ltcGwobV9jb250ZXh0LmdldCgpKS0+c2V0SWdub3JlVExTRXJyb3JzKGlz
TmV3UG9saWN5KTsKIH0KIAorUGFzdGVib2FyZENsaWVudEVmbCogRXdrQ29udGV4dDo6cGFzdGVi
b2FyZENsaWVudCgpCit7CisgICAgcmV0dXJuIG1fcGFzdGVib2FyZENsaWVudC5nZXQoKTsKK30K
KwogRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkKIHsKICAgICByZXR1cm4g
RXdrQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKTsKQEAgLTU3NiwzICs1ODMsMTAgQEAgdm9pZCBl
d2tfY29udGV4dF9wcmVmZXJyZWRfbGFuZ3VhZ2VzX3NldChFaW5hX0xpc3QqIGxhbmd1YWdlcykK
ICAgICBXZWJDb3JlOjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMocHJlZmVycmVkTGFu
Z3VhZ2VzKTsKICAgICBXZWJDb3JlOjpsYW5ndWFnZURpZENoYW5nZSgpOwogfQorCit2b2lkIGV3
a19jb250ZXh0X3Bhc3RlYm9hcmRfY2FsbGJhY2tzX3NldChFd2tfQ29udGV4dCogZXdrQ29udGV4
dCwgRXdrX1Bhc3RlYm9hcmRfUmVhZF9TdHJpbmdfQ2Igc3RyaW5nR2V0Q2FsbGJhY2ssIEV3a19Q
YXN0ZWJvYXJkX1dyaXRlX1N0cmluZ19DYiBzdHJpbmdTZXRDYWxsYmFjaywgdm9pZCogdXNlckRh
dGEpCit7CisgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oRXdrQ29udGV4dCwgZXdrQ29u
dGV4dCwgaW1wbCk7CisKKyAgICBpbXBsLT5wYXN0ZWJvYXJkQ2xpZW50KCktPnNldENhbGxiYWNr
cyhzdHJpbmdHZXRDYWxsYmFjaywgc3RyaW5nU2V0Q2FsbGJhY2ssIHVzZXJEYXRhKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCmluZGV4IGJj
N2IwNTQuLjJjZTRiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaApAQCAtMTAxLDYgKzEwMSwzMCBAQCBlbnVtIEV3a19UTFNfRXJyb3JfUG9s
aWN5IHsKIHR5cGVkZWYgZW51bSBFd2tfVExTX0Vycm9yX1BvbGljeSBFd2tfVExTX0Vycm9yX1Bv
bGljeTsKIAogLyoqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNldCBzZWxlY3Rpb24gZm9ybWF0
cy4KKyAqLworZW51bSBFd2tfUGFzdGVib2FyZF9TZWxlY3Rpb25fRm9ybWF0IHsKKyAgICBFV0tf
UEFTVEVCT0FSRF9TRUxFQ1RJT05fRk9STUFUX1VOS05PV04sCisgICAgRVdLX1BBU1RFQk9BUkRf
U0VMRUNUSU9OX0ZPUk1BVF9URVhULAorICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JN
QVRfSFRNTCwKK307CisKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciB0aGUgRXdrX1Bhc3Rl
Ym9hcmRfU2VsZWN0aW9uX0Zvcm1hdC4KK3R5cGVkZWYgZW51bSBFd2tfUGFzdGVib2FyZF9TZWxl
Y3Rpb25fRm9ybWF0IEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQ7CisKKy8qKgorICog
RW51bSB2YWx1ZXMgdXNlZCB0byBzZXQgc2VsZWN0aW9uIHR5cGVzLgorICovCitlbnVtIEV3a19Q
YXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHsKKyAgICBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05f
VFlQRV9VTktOT1dOLAorICAgIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9UWVBFX1BSSU1BUlks
CisgICAgRVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX1RZUEVfQ0xJUEJPQVJECit9OworCisvLy8g
Q3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgdGhlIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBl
LgordHlwZWRlZiBlbnVtIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIEV3a19QYXN0ZWJv
YXJkX1NlbGVjdGlvbl9UeXBlOworCisvKioKICAqIEB0eXBlZGVmIEV3a19VcmxfU2NoZW1lX1Jl
cXVlc3RfQ2IgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYgogICogQGJyaWVmIENhbGxiYWNrIHR5
cGUgZm9yIHVzZSB3aXRoIGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVnaXN0ZXIoKS4KICAqLwpA
QCAtMTUyLDYgKzE3NiwyOCBAQCB0eXBlZGVmIHZvaWQgKCpFd2tfSGlzdG9yeV9Qb3B1bGF0ZV9W
aXNpdGVkX0xpbmtzX0NiKSh2b2lkICp1c2VyX2RhdGEpOwogdHlwZWRlZiB2b2lkICgqRXdrX0Nv
bnRleHRfTWVzc2FnZV9Gcm9tX0luamVjdGVkX0J1bmRsZV9DYikoY29uc3QgY2hhciAqbmFtZSwg
Y29uc3QgY2hhciAqYm9keSwgY2hhciAqKnJldHVybl9kYXRhLCB2b2lkICp1c2VyX2RhdGEpOwog
CiAvKioKKyAqIERlZmluZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0
byByZXF1ZXN0IGRhdGEgd2l0aCBnaXZlbiB0eXBlLgorICoKKyAqIFJldHVybnMgZGF0YSBmcm9t
IHRoZSBjbGlwYm9hcmQgZm9yIHJlcXVlc3RlZCB0eXBlLgorICoKKyAqIEBwYXJhbSB0eXBlIHR5
cGUgb2YgcmVxdWVzdGVkIGRhdGEKKyAqIEBwYXJhbSBmb3JtYXQgZm9ybWF0IG9mIHJlcXVlc3Rl
ZCBkYXRhCisgKiBAcGFyYW0gY2xpZW50X2luZm8gYXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YQor
ICoKKyAqIEByZXR1cm4gZGF0YSBvbiBzdWNjZXNzIG9yIEBjIE5VTEwgb24gZmFpbHVyZSBpZiB0
aGVyZSBpcyBubyBkYXRhIGluIGNsaXBib2FyZCBmb3IgcmVxdWVzdGVkIHR5cGUgb3Igb24gZmFp
bHVyZQorICovCit0eXBlZGVmIGNvbnN0IGNoYXIgKigqRXdrX1Bhc3RlYm9hcmRfUmVhZF9TdHJp
bmdfQ2IpKEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHR5cGUsIEV3a19QYXN0ZWJvYXJk
X1NlbGVjdGlvbl9Gb3JtYXQgZm9ybWF0LCB2b2lkICp1c2VyX2RhdGEpOworCisvKioKKyAqIERl
ZmluZXMgYSB0eXBlIG5hbWUgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBwZXJmb3JtIGNv
cHkgb3BlcmF0aW9uIHdpdGggZ2l2ZW4gZGF0YSB0eXBlLgorICoKKyAqIEBwYXJhbSB0eXBlIHR5
cGUgb2YgY29waWVkIGRhdGEKKyAqIEBwYXJhbSBmb3JtYXQgZm9ybWF0IG9mIGNvcGllZCBkYXRh
CisgKiBAcGFyYW0gc3RyaW5nIGRhdGEgdG8gYmUgY29waWVkCisgKiBAcGFyYW0gY2xpZW50X2lu
Zm8gYXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YQorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfUGFz
dGVib2FyZF9Xcml0ZV9TdHJpbmdfQ2IpKEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHR5
cGUsIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQgZm9ybWF0LCBjb25zdCBjaGFyICpz
dHJpbmcsIHZvaWQgKnVzZXJfZGF0YSk7CisvKioKICAqIEdldHMgZGVmYXVsdCBFd2tfQ29udGV4
dCBpbnN0YW5jZS4KICAqCiAgKiBUaGUgcmV0dXJuZWQgRXdrX0NvbnRleHQgb2JqZWN0IEBiIHNo
b3VsZCBub3QgYmUgdW5yZWYnZWQgaWYgYXBwbGljYXRpb24KQEAgLTQ0NCw2ICs0OTAsMTYgQEAg
RUFQSSB2b2lkIGV3a19jb250ZXh0X3Rsc19lcnJvcl9wb2xpY3lfc2V0KEV3a19Db250ZXh0ICpj
b250ZXh0LCBFd2tfVExTX0Vycm9yX1AKICAqLwogRUFQSSB2b2lkIGV3a19jb250ZXh0X3ByZWZl
cnJlZF9sYW5ndWFnZXNfc2V0KEVpbmFfTGlzdCAqbGFuZ3VhZ2VzKTsKIAorLyoqCisgKiBTZXRz
IHBhc3RlYm9hcmQgY2FsbGJhY2tzIGZvciBnaXZlbiBjb250ZXh0LgorICoKKyAqIEBwYXJhbSBj
b250ZXh0IG9iamVjdCB0byBzZXQgcGFzdGVib2FyZCBjYWxsYmFja3MKKyAqIEBwYXJhbSBnZXRf
Y2IgZ2V0IGRhdGEgY2FsbGJhY2sgdG8gYmUgc2V0IC0gaXQgbXVzdCBub3QgYmUgQGMgTlVMTAor
ICogQHBhcmFtIHNldF9jYiBzZXQgZGF0YSBjYWxsYmFjayB0byBiZSBzZXQgLSBpdCBtdXN0IG5v
dCBiZSBAYyBOVUxMCisgKiBAcGFyYW0gZGF0YSBhcHBsaWNhdGlvbiBkYXRhIHBvaW50ZXIgdG8g
YmUgcmV0dXJuZWQgYnkgY2FsbGJhY2sgZnVuY3Rpb25zCisgKi8KK0VBUEkgdm9pZCBld2tfY29u
dGV4dF9wYXN0ZWJvYXJkX2NhbGxiYWNrc19zZXQoRXdrX0NvbnRleHQgKmNvbnRleHQsIEV3a19Q
YXN0ZWJvYXJkX1JlYWRfU3RyaW5nX0NiIGdldF9zdHJpbmdfY2IsIEV3a19QYXN0ZWJvYXJkX1dy
aXRlX1N0cmluZ19DYiBzZXRfc3RyaW5nX2NiLCB2b2lkICpkYXRhKTsKKwogI2lmZGVmIF9fY3Bs
dXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCAxNzI5YzRhLi5iZTg1OGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
cHJpdmF0ZS5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIEV3a0Zhdmljb25EYXRhYmFzZTsKIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQ29udGV4dEhpc3RvcnlDbGllbnRFZmw7CiBjbGFzcyBE
b3dubG9hZE1hbmFnZXJFZmw7CitjbGFzcyBQYXN0ZWJvYXJkQ2xpZW50RWZsOwogY2xhc3MgUmVx
dWVzdE1hbmFnZXJDbGllbnRFZmw7CiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogY2xhc3Mg
QmF0dGVyeVByb3ZpZGVyOwpAQCAtODYsNiArODcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dElnbm9yZVRMU0Vycm9ycyhFd2tfVExTX0Vycm9yX1BvbGljeSBUTFNFcnJvclBvbGljeSkgY29u
c3Q7CiAKKyAgICBXZWJLaXQ6OlBhc3RlYm9hcmRDbGllbnRFZmwqIHBhc3RlYm9hcmRDbGllbnQo
KTsKKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIHZvaWQgc2V0QWRkaXRp
b25hbFBsdWdpblBhdGgoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKQEAgLTExOCw2ICsxMjEsNyBA
QCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsPiBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmw+IG1faGlzdG9yeUNsaWVudDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViS2l0OjpQYXN0ZWJvYXJkQ2xpZW50RWZsPiBtX3Bhc3RlYm9hcmRDbGll
bnQ7CiAKICAgICBKU0dsb2JhbENvbnRleHRSZWYgbV9qc0dsb2JhbENvbnRleHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9w
YXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl9wYXN0ZWJvYXJkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45YTcxYjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvdGVzdHMvdGVzdF9ld2syX3Bhc3RlYm9hcmQuY3BwCkBAIC0wLDAgKzEsMTE1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8qKgorICogQGJyaWVmIGNvdmVycyBwYXN0ZWJvYXJkIEFQSSBmcm9tIGV3
a19jb250ZXh0LmgKKyAqIEBmaWxlIHRlc3RfZXdrMl9wYXN0ZWJvYXJkLmNwcAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0
QmFzZS5oIgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVBy
aXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK3N0YXRp
YyBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworCitzdGF0aWMgY29uc3QgY2hhciB0ZXN0SW5w
dXRWYWx1ZVtdID0gIlRFU1QiOworc3RhdGljIGNvbnN0IGNoYXIgdGVzdENsaWVudEluZm9bXSA9
ICJDTElFTlRfSU5GTyI7CitzdGF0aWMgRXdrX0NvbnRleHRfTWVudV9JdGVtX0FjdGlvbiB0ZXN0
U2VsZWN0SXRlbSA9IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTk9fQUNUSU9OOworCitzdGF0
aWMgY29uc3QgY2hhciogcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKEV3a19QYXN0ZWJvYXJkX1Nl
bGVjdGlvbl9UeXBlIHR5cGUsIEV3a19QYXN0ZWJvYXJkX1NlbGVjdGlvbl9Gb3JtYXQgZm9ybWF0
LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiBpbmZvID0gc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KHVzZXJEYXRhKTsKKworICAgIC8vIENoZWNrIGlmIHByb3BlciBjbGllbnQg
aW5mbyB3YXMgcmVjZWl2ZWQuCisgICAgRVhQRUNUX1NUUkVRKGluZm8sIHRlc3RDbGllbnRJbmZv
KTsKKworICAgIHJldHVybiB0ZXN0SW5wdXRWYWx1ZTsKK30KKworc3RhdGljIHZvaWQgd3JpdGVT
dHJpbmdUb1Bhc3RlYm9hcmQoRXdrX1Bhc3RlYm9hcmRfU2VsZWN0aW9uX1R5cGUgdHlwZSwgRXdr
X1Bhc3RlYm9hcmRfU2VsZWN0aW9uX0Zvcm1hdCBmb3JtYXQsIGNvbnN0IGNoYXIqIHN0cmluZywg
dm9pZCogdXNlckRhdGEpCit7CisgICAgY29uc3QgY2hhciogaW5mbyA9IHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPih1c2VyRGF0YSk7CisKKyAgICAvLyBDaGVjayBpZiBwcm9wZXIgY2xpZW50IGlu
Zm8gd2FzIHJlY2VpdmVkLgorICAgIEVYUEVDVF9TVFJFUShpbmZvLCB0ZXN0Q2xpZW50SW5mbyk7
CisKKyAgICAvLyBDaGVjayBpZiBwcm9wZXIgZGF0YSB3YXMgY29waWVkLiBJbmNvbWluZyBkYXRh
IG5lZWRzIHRvIGJlIHN0cmlwcGVkIGZyb20gSFRNTCB0YWdzLgorICAgIEVYUEVDVF9TVFJFUShl
dmFzX3RleHRibG9ja190ZXh0X21hcmt1cF90b191dGY4KDAsIHN0cmluZyksIHRlc3RJbnB1dFZh
bHVlKTsKK30KKworc3RhdGljIEVpbmFfQm9vbCBzaG93Q29udGV4dE1lbnUoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXdrX0NvbnRl
eHRfTWVudSogY29udGV4dE1lbnUpCit7CisgICAgY29uc3QgRWluYV9MaXN0KiBtZW51SXRlbXMg
PSBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CisgICAgRVhQRUNUX0dU
KGVpbmFfbGlzdF9jb3VudChtZW51SXRlbXMpLCAwKTsKKworICAgIGNvbnN0IEVpbmFfTGlzdCog
bGlzdEl0ZXJhdG9yOworICAgIHZvaWQqIGRhdGE7CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0gobWVu
dUl0ZW1zLCBsaXN0SXRlcmF0b3IsIGRhdGEpIHsKKyAgICAgICAgRXdrX0NvbnRleHRfTWVudV9J
dGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oZGF0YSk7Cisg
ICAgICAgIGlmIChld2tfY29udGV4dF9tZW51X2l0ZW1fYWN0aW9uX2dldChpdGVtKSA9PSB0ZXN0
U2VsZWN0SXRlbSkKKyAgICAgICAgICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9zZWxlY3QoY29u
dGV4dE1lbnUsIGl0ZW0pOworICAgIH0KKworICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworLyoqCisgKiBUZXN0IHdoZXRoZXIgY2FsbGJhY2tzIHNldCBi
eSBld2tfcGFzdGVib2FyZF9pbml0aWFsaXplOiBFd2tfUGFzdGVib2FyZF9EYXRhX1NldF9DYiBh
bmQgRXdrX1Bhc3RlYm9hcmRfRGF0YV9HZXRfQ2IKKyAqIGFyZSBjYWxsZWQgd2hlbiBjb250ZXh0
IG1lbnUgaXRlbXMgIkNvcHkiIGFuZCAiUGFzdGUiIGFyZSBzZWxlY3RlZC4KKyAqLworVEVTVF9G
KEVXSzJVbml0VGVzdEJhc2UsIGV3a19wYXN0ZWJvYXJkX2luaXRpYWxpemUpCit7CisgICAgY29u
c3QgY2hhciBwYXN0ZWJvYXJkSFRNTFtdID0gIjxodG1sPjxib2R5PjxpbnB1dCB0eXBlPVwidGV4
dFwiIGlkPVwidGVzdFwiPjwvYm9keT48L2h0bWw+IjsKKworICAgIGV3a192aWV3X2h0bWxfc3Ry
aW5nX2xvYWQod2ViVmlldygpLCBwYXN0ZWJvYXJkSFRNTCwgImZpbGU6Ly8vIiwgMCk7CisgICAg
QVNTRVJUX1RSVUUod2FpdFVudGlsTG9hZEZpbmlzaGVkKCkpOworCisgICAgZXdrX2NvbnRleHRf
cGFzdGVib2FyZF9jYWxsYmFja3Nfc2V0KGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSks
IHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCwgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQsICh2b2lk
Kil0ZXN0Q2xpZW50SW5mbyk7CisKKyAgICBld2tWaWV3Q2xhc3MoKS0+Y29udGV4dF9tZW51X3No
b3cgPSBzaG93Q29udGV4dE1lbnU7CisKKyAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKyAgICB0
ZXN0U2VsZWN0SXRlbSA9IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfUEFTVEU7CisgICAgbW91
c2VDbGljaygzMCwgMjAsIDMpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRydWUodGVzdEZp
bmlzaGVkKSk7CisKKyAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKyAgICB0ZXN0U2VsZWN0SXRl
bSA9IEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfU0VMRUNUX0FMTDsKKyAgICBtb3VzZUNsaWNr
KDMwLCAyMCwgMyk7CisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVHJ1ZSh0ZXN0RmluaXNoZWQp
KTsKKworICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIHRlc3RTZWxlY3RJdGVtID0gRVdL
X0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DT1BZOworICAgIG1vdXNlQ2xpY2soMzAsIDIwLCAzKTsK
KyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUcnVlKHRlc3RGaW5pc2hlZCkpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYXN0ZWJvYXJkQ2xpZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFzdGVib2FyZENsaWVudEVmbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzYzM1MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFzdGVib2FyZENsaWVudEVmbC5j
cHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBF
bGVjdHJvbmljcy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBhc3RlYm9hcmRDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIldLQ29udGV4dEVm
bC5oIgorI2luY2x1ZGUgIldLQ29udGV4dFBhc3RlYm9hcmRDbGllbnQuaCIKKyNpbmNsdWRlICJX
S0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvRWZsUGFzdGVib2FyZFV0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBpbmxpbmUgUGFzdGVib2FyZENs
aWVudEVmbCogdG9QYXN0ZWJvYXJkQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhc3RlYm9hcmRDbGllbnRFZmwqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK3N0YXRpYyBFd2tfUGFzdGVib2FyZF9TZWxlY3Rp
b25fRm9ybWF0IHNlbGVjdGlvbkZvcm1hdEZyb21TdHJpbmcoV0tTdHJpbmdSZWYgc2VsZWN0aW9u
Rm9ybWF0KQoreworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHNlbGVjdGlv
bkZvcm1hdCwgV2ViQ29yZTo6c2VsZWN0aW9uRm9ybWF0VGV4dC51dGY4KCkuZGF0YSgpKSkKKyAg
ICAgICAgcmV0dXJuIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfVEVYVDsKKworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHNlbGVjdGlvbkZvcm1hdCwgV2ViQ29y
ZTo6c2VsZWN0aW9uRm9ybWF0TWFya3VwLnV0ZjgoKS5kYXRhKCkpKQorICAgICAgICByZXR1cm4g
RVdLX1BBU1RFQk9BUkRfU0VMRUNUSU9OX0ZPUk1BVF9IVE1MOworCisgICAgcmV0dXJuIEVXS19Q
QVNURUJPQVJEX1NFTEVDVElPTl9GT1JNQVRfVU5LTk9XTjsKK30KKworc3RhdGljIEV3a19QYXN0
ZWJvYXJkX1NlbGVjdGlvbl9UeXBlIHNlbGVjdGlvblR5cGVGcm9tU3RyaW5nKFdLU3RyaW5nUmVm
IHNlbGVjdGlvblR5cGUpCit7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
c2VsZWN0aW9uVHlwZSwgV2ViQ29yZTo6c2VsZWN0aW9uVHlwZVByaW1hcnkudXRmOCgpLmRhdGEo
KSkpCisgICAgICAgIHJldHVybiBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9QUklNQVJZ
OworCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc2VsZWN0aW9uVHlwZSwg
V2ViQ29yZTo6c2VsZWN0aW9uVHlwZUNsaXBib2FyZC51dGY4KCkuZGF0YSgpKSkKKyAgICAgICAg
cmV0dXJuIEVXS19QQVNURUJPQVJEX1NFTEVDVElPTl9UWVBFX0NMSVBCT0FSRDsKKworICAgIHJl
dHVybiBFV0tfUEFTVEVCT0FSRF9TRUxFQ1RJT05fVFlQRV9VTktOT1dOOworfQorCitXS1N0cmlu
Z1JlZiBQYXN0ZWJvYXJkQ2xpZW50RWZsOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoV0tDb250
ZXh0UmVmLCBXS1N0cmluZ1JlZiBwYXN0ZWJvYXJkVHlwZSwgV0tTdHJpbmdSZWYgcGFzdGVib2Fy
ZEZvcm1hdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBjb25zdCBQYXN0ZWJvYXJk
Q2xpZW50RWZsKiBwYXN0ZWJvYXJkQ2xpZW50ID0gdG9QYXN0ZWJvYXJkQ2xpZW50RWZsKGNsaWVu
dEluZm8pOworCisgICAgaWYgKCFwYXN0ZWJvYXJkQ2xpZW50ICYmICFwYXN0ZWJvYXJkQ2xpZW50
LT5tX3JlYWRTdHJpbmdGcm9tUGFzdGVib2FyZENhbGxiYWNrKQorICAgICAgICByZXR1cm4gV0tT
dHJpbmdSZWYoKTsKKworICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhw
YXN0ZWJvYXJkQ2xpZW50LT5tX3JlYWRTdHJpbmdGcm9tUGFzdGVib2FyZENhbGxiYWNrKHNlbGVj
dGlvblR5cGVGcm9tU3RyaW5nKHBhc3RlYm9hcmRUeXBlKSwgc2VsZWN0aW9uRm9ybWF0RnJvbVN0
cmluZyhwYXN0ZWJvYXJkRm9ybWF0KSwgcGFzdGVib2FyZENsaWVudC0+bV91c2VyRGF0YSkpOwor
fQorCit2b2lkIFBhc3RlYm9hcmRDbGllbnRFZmw6OndyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFdL
Q29udGV4dFJlZiwgV0tTdHJpbmdSZWYgcGFzdGVib2FyZFR5cGUsIFdLU3RyaW5nUmVmIHBhc3Rl
Ym9hcmRGb3JtYXQsIFdLU3RyaW5nUmVmIHdrU3RyaW5nLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIGNvbnN0IFBhc3RlYm9hcmRDbGllbnRFZmwqIHBhc3RlYm9hcmRDbGllbnQgPSB0
b1Bhc3RlYm9hcmRDbGllbnRFZmwoY2xpZW50SW5mbyk7CisKKyAgICBpZiAoIXBhc3RlYm9hcmRD
bGllbnQgJiYgIXBhc3RlYm9hcmRDbGllbnQtPm1fd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmRDYWxs
YmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHN0cmluZyh3
a1N0cmluZyk7CisKKyAgICBwYXN0ZWJvYXJkQ2xpZW50LT5tX3dyaXRlU3RyaW5nVG9QYXN0ZWJv
YXJkQ2FsbGJhY2soc2VsZWN0aW9uVHlwZUZyb21TdHJpbmcocGFzdGVib2FyZFR5cGUpLCBzZWxl
Y3Rpb25Gb3JtYXRGcm9tU3RyaW5nKHBhc3RlYm9hcmRGb3JtYXQpLCBzdHJpbmcsIHBhc3RlYm9h
cmRDbGllbnQtPm1fdXNlckRhdGEpOworfQorCitQYXN0ZWJvYXJkQ2xpZW50RWZsOjpQYXN0ZWJv
YXJkQ2xpZW50RWZsKFdLQ29udGV4dFJlZiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRl
eHQpCisgICAgLCBtX3VzZXJEYXRhKDApCisgICAgLCBtX3JlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZENhbGxiYWNrKDApCisgICAgLCBtX3dyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkQ2FsbGJhY2soMCkK
K3sKKyAgICBXS0NvbnRleHRQYXN0ZWJvYXJkQ2xpZW50VjAgd2tQYXN0ZWJvYXJkQ2xpZW50Owor
ICAgIG1lbXNldCgmd2tQYXN0ZWJvYXJkQ2xpZW50LCAwLCBzaXplb2YoV0tDb250ZXh0UGFzdGVi
b2FyZENsaWVudFYwKSk7CisKKyAgICB3a1Bhc3RlYm9hcmRDbGllbnQuYmFzZS52ZXJzaW9uID0g
MDsKKyAgICB3a1Bhc3RlYm9hcmRDbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhpczsKKyAgICB3
a1Bhc3RlYm9hcmRDbGllbnQucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkID0gcmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkOworICAgIHdrUGFzdGVib2FyZENsaWVudC53cml0ZVN0cmluZ1RvUGFzdGVi
b2FyZCA9IHdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkOworCisgICAgV0tDb250ZXh0U2V0UGFzdGVi
b2FyZENsaWVudChtX2NvbnRleHQuZ2V0KCksICZ3a1Bhc3RlYm9hcmRDbGllbnQuYmFzZSk7Cit9
CisKK1Bhc3RlYm9hcmRDbGllbnRFZmw6On5QYXN0ZWJvYXJkQ2xpZW50RWZsKCkKK3sKK30KKwor
dm9pZCBQYXN0ZWJvYXJkQ2xpZW50RWZsOjpzZXRDYWxsYmFja3MoRXdrX1Bhc3RlYm9hcmRfUmVh
ZF9TdHJpbmdfQ2IgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkQ2FsbGJhY2ssIEV3a19QYXN0ZWJv
YXJkX1dyaXRlX1N0cmluZ19DYiB3cml0ZVN0cmluZ1RvUGFzdGVib2FyZENhbGxiYWNrLCB2b2lk
KiB1c2VyRGF0YSkKK3sKKyAgICBtX3JlYWRTdHJpbmdGcm9tUGFzdGVib2FyZENhbGxiYWNrID0g
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkQ2FsbGJhY2s7CisgICAgbV93cml0ZVN0cmluZ1RvUGFz
dGVib2FyZENhbGxiYWNrID0gd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmRDYWxsYmFjazsKKyAgICBt
X3VzZXJEYXRhID0gdXNlckRhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYXN0ZWJvYXJkQ2xpZW50RWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bhc3RlYm9hcmRDbGllbnRFZmwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTgxNDMyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYXN0ZWJvYXJkQ2xpZW50RWZsLmgKQEAg
LTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9u
aWNzLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwor
ICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhc3RlYm9hcmRDbGllbnRFZmxf
aAorI2RlZmluZSBQYXN0ZWJvYXJkQ2xpZW50RWZsX2gKKworI2luY2x1ZGUgImV3a19jb250ZXh0
LmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1JldGFp
blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGFzdGVib2FyZENsaWVudEVm
bCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUGFzdGVib2FyZENsaWVudEVmbChXS0NvbnRleHRS
ZWYpOworICAgIH5QYXN0ZWJvYXJkQ2xpZW50RWZsKCk7CisKKyAgICB2b2lkIHNldENhbGxiYWNr
cyhFd2tfUGFzdGVib2FyZF9SZWFkX1N0cmluZ19DYiwgRXdrX1Bhc3RlYm9hcmRfV3JpdGVfU3Ry
aW5nX0NiLCB2b2lkKiB1c2VyRGF0YSk7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFdLU3RyaW5n
UmVmIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBh
c3RlYm9hcmRUeXBlLCBXS1N0cmluZ1JlZiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoV0tDb250
ZXh0UmVmLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYgcGFzdGVib2FyZFR5cGUsIFdLU3RyaW5n
UmVmIHBhc3RlYm9hcmROYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gbV9jb250ZXh0OworCisgICAgdm9pZCogbV91c2VyRGF0YTsK
KyAgICBFd2tfUGFzdGVib2FyZF9SZWFkX1N0cmluZ19DYiBtX3JlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZENhbGxiYWNrOworICAgIEV3a19QYXN0ZWJvYXJkX1dyaXRlX1N0cmluZ19DYiBtX3dyaXRl
U3RyaW5nVG9QYXN0ZWJvYXJkQ2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFBhc3RlYm9hcmRDbGllbnRFZmxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>