<?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>123065</bug_id>
          
          <creation_ts>2013-10-19 12:31:51 -0700</creation_ts>
          <short_desc>[Cocoa] Remove some indirection that was only necessary for supporting the legacy Objective-C runtime</short_desc>
          <delta_ts>2013-11-25 15:47:56 -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>WebKit2</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>124850</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>941536</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-10-19 12:31:51 -0700</bug_when>
    <thetext>[Cocoa] Remove some indirection that was only necessary for supporting the legacy Objective-C runtime</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941540</commentid>
    <comment_count>1</comment_count>
      <attachid>214660</attachid>
    <who name="">mitz</who>
    <bug_when>2013-10-19 12:45:18 -0700</bug_when>
    <thetext>Created attachment 214660
Remove private _data ivars from interfaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941551</commentid>
    <comment_count>2</comment_count>
      <attachid>214660</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-19 13:15:19 -0700</bug_when>
    <thetext>Comment on attachment 214660
Remove private _data ivars from interfaces

Nice. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941552</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-10-19 13:16:53 -0700</bug_when>
    <thetext>Landed in &lt;http://trac.webkit.org/r157676&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941566</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-19 13:41:31 -0700</bug_when>
    <thetext>This broke 32-bit build, &lt;http://build.webkit.org/builders/Apple%20MountainLion%20Release%20(32-bit%20Build)/builds/4983/steps/compile-webkit/logs/stdio/text&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941567</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-10-19 13:43:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This broke 32-bit build, &lt;http://build.webkit.org/builders/Apple%20MountainLion%20Release%20(32-bit%20Build)/builds/4983/steps/compile-webkit/logs/stdio/text&gt;

I’m on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941587</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-10-19 14:34:56 -0700</bug_when>
    <thetext>I reverted everything in r157681. I can attempt this again when I have a 32-bit build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954058</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-11-25 12:14:59 -0800</bug_when>
    <thetext>Going to try something like this again after bug 124850 is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954103</commentid>
    <comment_count>8</comment_count>
      <attachid>217832</attachid>
    <who name="">mitz</who>
    <bug_when>2013-11-25 14:29:28 -0800</bug_when>
    <thetext>Created attachment 217832
Remove private _data ivars from interfaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954139</commentid>
    <comment_count>9</comment_count>
      <attachid>217832</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-25 15:47:54 -0800</bug_when>
    <thetext>Comment on attachment 217832
Remove private _data ivars from interfaces

Clearing flags on attachment: 217832

Committed r159770: &lt;http://trac.webkit.org/changeset/159770&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954140</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-25 15:47:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214660</attachid>
            <date>2013-10-19 12:45:18 -0700</date>
            <delta_ts>2013-11-25 12:14:38 -0800</delta_ts>
            <desc>Remove private _data ivars from interfaces</desc>
            <filename>bug-123065-20131019124517.patch</filename>
            <type>text/plain</type>
            <size>26554</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzY3MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDEzLTEwLTE5ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBSZW1vdmUgc29tZSBp
bmRpcmVjdGlvbiB0aGF0IHdhcyBvbmx5IG5lY2Vzc2FyeSBmb3Igc3VwcG9ydGluZyB0aGUgbGVn
YWN5IE9iamVjdGl2ZS1DIHJ1bnRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMzA2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyLmg6IEFkZGVkIFdLX0FQSV9FTkFCTEVEIGd1YXJkLiBSZW1vdmVkIF9kYXRhCisgICAg
ICAgIGl2YXIgYW5kIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRhdGEgY2xhc3MgZGVjbGFy
YXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyLm1tOiBBZGRlZCBXS19BUElfRU5BQkxFRCBndWFyZC4gUmVtb3ZlZAorICAgICAgICBX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEYXRhIGNsYXNzIGFuZCBtb3ZlZCBfcGFnZVJlZiBp
dmFyIGRpcmVjdGx5IGludG8KKyAgICAgICAgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLCBk
ZWNsYXJpbmcgaXQgaW4gdGhlIEBpbXBsZW1lbnRhdGlvbi4gUmVtb3ZlZCBpdmFyIGFuZCBhY2Nl
c3NvcnMKKyAgICAgICAgZm9yIHRoZSBsb2FkRGVsZWdhdGUgcHJvcGVydHksIGxldHRpbmcgdGhl
IGNvbXBpbGVyIHN5bnRoZXNpemUgdGhlbS4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyIGRlYWxsb2NdKTogUmVtb3ZlZCBpbmRpcmVjdGlvbiB2aWEgX2RhdGEuCisgICAg
ICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfcGFnZVJlZl0pOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRSZXF1ZXN0OnVzZXJEYXRh
Ol0pOiBSZW1vdmVkIGluZGlyZWN0aW9uIHZpYSAtX3BhZ2VSZWYuCisgICAgICAgICgtW1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRmlsZVVSTDpyZXN0cmljdFRvRmlsZXNXaXRoaW46
dXNlckRhdGE6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgbG9hZEhUTUxTdHJpbmc6YmFzZVVSTDp1c2VyRGF0YTpdKTogRGl0dG8uCisgICAgICAgICgt
W1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2Rp
bmdOYW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAgIERpdHRvLgorICAgICAgICAoLVtX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgc3RvcExvYWRpbmddKTogRGl0dG8uCisgICAgICAg
ICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRdKTogRGl0dG8uCisgICAgICAg
ICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRGcm9tT3JpZ2luXSk6IERpdHRv
LgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgZ29Gb3J3YXJkXSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgY2FuR29Gb3J3YXJk
XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgZ29CYWNr
XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgY2FuR29C
YWNrXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgYWN0
aXZlVVJMXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
cHJvdmlzaW9uYWxVUkxdKTogRGl0dG8uCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciBjb21taXR0ZWRVUkxdKTogRGl0dG8uCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciB0aXRsZV0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyIHRleHRab29tXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgc2V0VGV4dFpvb206XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgcGFnZVpvb21dKTogRGl0dG8uCisgICAgICAgICgtW1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciBzZXRQYWdlWm9vbTpdKTogRGl0dG8uCisgICAgICAgICgt
W1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBzZXRQYWdpbmF0aW9uTW9kZTpdKTogRGl0dG8u
CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBwYWdpbmF0aW9uTW9kZV0p
OiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHNldFBhZ2lu
YXRpb25CZWhhdmVzTGlrZUNvbHVtbnM6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgcGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1uc10pOiBEaXR0by4K
KyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHNldFBhZ2VMZW5ndGg6XSk6
IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcGFnZUxlbmd0
aF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHNldEdh
cEJldHdlZW5QYWdlczpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciBnYXBCZXR3ZWVuUGFnZXNdKTogRGl0dG8uCisgICAgICAgICgtW1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciBwYWdlQ291bnRdKTogRGl0dG8uCisgICAgICAgICgtW1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciBfaW5pdFdpdGhQYWdlUmVmOl0pOiBSZW1vdmVkIGluZGlyZWN0
aW9uIHZpYSBfZGF0YS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oOiBBZGRlZCBXS19BUElfRU5BQkxFRCBndWFyZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJQcml2
YXRlLmg6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0Nv
bnRleHRHcm91cC5oOiBBZGRlZCBXS19BUElfRU5BQkxFRCBndWFyZC4gUmVtb3ZlZCBfZGF0YSBp
dmFyCisgICAgICAgIGFuZCBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwRGF0YSBjbGFzcyBkZWNsYXJh
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
Lm1tOiBBZGRlZCBXS19BUElfRU5BQkxFRCBndWFyZC4gUmVtb3ZlZAorICAgICAgICBXS0Jyb3dz
aW5nQ29udGV4dEdyb3VwRGF0YSBjbGFzcyBhbmQgbW92ZWQgX3BhZ2VHcm91cFJlZiBpdmFyIGRp
cmVjdGx5IGluZm8KKyAgICAgICAgV0tCcm93c2luZ0NvbnRleHRHcm91cCwgZGVjbGFyaW5nIGl0
IGluIHRoZSBAaW1wbGVtZW50YXRpb24uCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0R3Jv
dXAgaW5pdFdpdGhJZGVudGlmaWVyOl0pOiBSZW1vdmVkIGluZGlyZWN0aW9uIHZpYSBfZGF0YS4K
KyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRHcm91cCBfcGFnZUdyb3VwUmVmXSk6IERpdHRv
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0R3JvdXBQcml2
YXRlLmg6IEFkZGVkIFdLX0FQSV9FTkFCTEVEIGd1YXJkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9tYWMvV0tDb25uZWN0aW9uLmg6IEFkZGVkIFdLX0FQSV9FTkFCTEVEIGd1YXJkLiBSZW1v
dmVkIF9kYXRhIGl2YXIgYW5kCisgICAgICAgIFdLQ29ubmVjdGlvbkRhdGEgY2xhc3MgZGVjbGFy
YXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tDb25uZWN0aW9uLm1tOiBBZGRl
ZCBXS19BUElfRU5BQkxFRCBndWFyZC4gUmVtb3ZlZCBXS0Nvbm5lY3Rpb25EYXRhCisgICAgICAg
IGNsYXNzIGFuZCBtb3ZlZCBfY29ubmVjdGlvblJlZiBpdmFyIGRpcmVjdGx5IGludG8gV0tDb25u
ZWN0aW9uLCBkZWNsYXJpbmcgaXQgaW4gdGhlCisgICAgICAgIEBpbXBsZW1lbnRhdGlvbi4gUmVt
b3ZlZCBpdmFyIGFuZCBhY2Nlc3NvcnMgZm9yIHRoZSBkZWxlZ2F0ZSBwcm9wZXJ0eSwgbGV0dGlu
ZyB0aGUgY29tcGlsZXIKKyAgICAgICAgc3ludGhlc2l6ZSB0aGVtLgorICAgICAgICAoLVtXS0Nv
bm5lY3Rpb24gZGVhbGxvY10pOiBSZW1vdmVkIGluZGlyZWN0aW9uIHZpYSBfZGF0YS4KKyAgICAg
ICAgKC1bV0tDb25uZWN0aW9uIHNlbmRNZXNzYWdlV2l0aE5hbWU6Ym9keTpdKTogRGl0dG8uCisg
ICAgICAgICgtW1dLQ29ubmVjdGlvbiBfaW5pdFdpdGhDb25uZWN0aW9uUmVmOl0pOiBEaXR0by4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS0Nvbm5lY3Rpb25JbnRlcm5hbC5oOiBBZGRl
ZCBXS19BUElfRU5BQkxFRCBndWFyZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dL
UHJvY2Vzc0dyb3VwLmg6IEFkZGVkIFdLX0FQSV9FTkFCTEVEIGd1YXJkLiBSZXBsYWNlZCBmb3J3
YXJkCisgICAgICAgIGRlY2xhcmF0aW9uIG9mIFdLQ29ubmVjdGlvbiB3aXRoIGFuIGltcG9ydC4g
UmVtb3ZlZCBfZGF0YSBpdmFyIGFuZCBXS1Byb2Nlc3NHcm91cERhdGEgY2xhc3MKKyAgICAgICAg
ZGVjbGFyYXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tQcm9jZXNzR3JvdXAu
bW06IEFkZGVkIFdLX0FQSV9FTkFCTEVEIGd1YXJkLiBSZW1vdmVkCisgICAgICAgIFdLUHJvY2Vz
c0dyb3VwRGF0YSBjbGFzcyBhbmQgbW92ZWQgX2NvbnRleHRSZWYgaXZhciBkaXJlY3RseSBpbnRv
IFdLUHJvY2Vzc0dyb3VwLCBkZWNsYXJpbmcKKyAgICAgICAgaXQgaW4gdGhlIEBpbXBsZW1lbnRh
dGlvbi4gUmVtb3ZlZCBpdmFyIGFuZCBhY2Nlc3NvcnMgZm9yIHRoZSBkZWxlZ2F0ZSBwcm9wZXJ0
eSwgbGV0dGluZyB0aGUKKyAgICAgICAgY29tcGlsZXIgc3ludGhlc2l6ZSB0aGVtLgorICAgICAg
ICAoLVtXS1Byb2Nlc3NHcm91cCBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOl0pOiBSZW1vdmVk
IGluZGlyZWN0aW9uIHZpYSBfZGF0YS4KKyAgICAgICAgKC1bV0tQcm9jZXNzR3JvdXAgZGVhbGxv
Y10pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQcm9jZXNzR3JvdXAgX2NvbnRleHRSZWZdKTogRGl0
dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tQcm9jZXNzR3JvdXBQcml2YXRlLmg6
IEFkZGVkIFdLX0FQSV9FTkFCTEVEIGd1YXJkLgorCiAyMDEzLTEwLTE5ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGdldCBMaW9uIGJ1aWxk
aW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDE1NzY3MikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNSArMjUsMTQgQEAKIAogI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQyL1dLRGVjbGFyYXRpb25T
cGVjaWZpZXJzLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tf
QVBJX0VOQUJMRUQKIAotQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRhdGE7CiBA
cHJvdG9jb2wgV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGU7CiAKIFdLX0VYUE9SVAotQGlu
dGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgOiBOU09iamVjdCB7Ci1AcHJpdmF0
ZQotICAgIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRhdGEgKl9kYXRhOwotfQorQGludGVy
ZmFjZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgOiBOU09iamVjdAogCiAjcHJhZ21hIG1h
cmsgRGVsZWdhdGVzCiAKQEAgLTExOCwzICsxMTcsNSBAQCAvKiBVUkwgZm9yIHRoZSBhY3RpdmUg
bG9hZC4gVGhpcyBpcyB0aGUgCiBAcHJvcGVydHkgQ0dGbG9hdCBwYWdlWm9vbTsKIAogQGVuZAor
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubW0JKHJldmlzaW9uIDE1NzY3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsOCBAQAogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKIAorI2lm
IFdLX0FQSV9FTkFCTEVECisKICNpbXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgogI2ltcG9ydCAi
V0tFcnJvckNGLmgiCiAjaW1wb3J0ICJXS0ZyYW1lLmgiCkBAIC01Nyw0NSArNTksMjEgQEAgc3Rh
dGljIGlubGluZSBOU1VSTCAqYXV0b3JlbGVhc2VkKFdLVVJMUgogICAgIHJldHVybiB1cmwgPyBD
RkJyaWRnaW5nUmVsZWFzZShXS1VSTENvcHlDRlVSTChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhZG9w
dFdLKHVybCkuZ2V0KCkpKSA6IG5pbDsKIH0KIAotQGludGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJEYXRhIDogTlNPYmplY3QgewotQHB1YmxpYworQGltcGxlbWVudGF0aW9uIFdL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB7CiAgICAgLy8gVW5kZXJseWluZyBXS1BhZ2VSZWYu
CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlUmVmPiBfcGFnZVJlZjsKLSAgICAKLSAgICAvLyBEZWxl
Z2F0ZSBmb3IgbG9hZCBjYWxsYmFja3MuCi0gICAgaWQ8V0tCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGU+IF9sb2FkRGVsZWdhdGU7CiB9Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXJEYXRhCi1AZW5kCi0KLQotQGltcGxlbWVudGF0aW9uIFdLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlcgogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KF9kYXRhLT5fcGFnZVJlZi5nZXQoKSwgMCk7CisgICAgV0tQYWdl
U2V0UGFnZUxvYWRlckNsaWVudChfcGFnZVJlZi5nZXQoKSwgMCk7CiAKLSAgICBbX2RhdGEgcmVs
ZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtIChXS1BhZ2VSZWYpX3BhZ2VSZWYK
IHsKLSAgICByZXR1cm4gX2RhdGEtPl9wYWdlUmVmLmdldCgpOwotfQotCi0jcHJhZ21hIG1hcmsg
RGVsZWdhdGVzCi0KLS0gKGlkPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPilsb2FkRGVs
ZWdhdGUKLXsKLSAgICByZXR1cm4gX2RhdGEtPl9sb2FkRGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQp
c2V0TG9hZERlbGVnYXRlOihpZDxXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZT4pbG9hZERl
bGVnYXRlCi17Ci0gICAgX2RhdGEtPl9sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGU7CisgICAg
cmV0dXJuIF9wYWdlUmVmLmdldCgpOwogfQogCiAjcHJhZ21hIG1hcmsgTG9hZGluZwpAQCAtMTMz
LDcgKzExMSw3IEBAIC0gKHZvaWQpbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXUKICAg
ICBpZiAodXNlckRhdGEpCiAgICAgICAgIHdrVXNlckRhdGEgPSBPYmpDT2JqZWN0R3JhcGg6OmNy
ZWF0ZSh1c2VyRGF0YSk7CiAKLSAgICBXS1BhZ2VMb2FkVVJMUmVxdWVzdFdpdGhVc2VyRGF0YShz
ZWxmLl9wYWdlUmVmLCB3a1JlcXVlc3QuZ2V0KCksIChXS1R5cGVSZWYpd2tVc2VyRGF0YS5nZXQo
KSk7CisgICAgV0tQYWdlTG9hZFVSTFJlcXVlc3RXaXRoVXNlckRhdGEoX3BhZ2VSZWYuZ2V0KCks
IHdrUmVxdWVzdC5nZXQoKSwgKFdLVHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAogLSAo
dm9pZClsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgcmVzdHJpY3RUb0ZpbGVzV2l0aGluOihOU1VS
TCAqKWFsbG93ZWREaXJlY3RvcnkKQEAgLTE1Myw3ICsxMzEsNyBAQCAtICh2b2lkKWxvYWRGaWxl
VVJMOihOU1VSTCAqKVVSTCByZXN0cmljCiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3a1Vz
ZXJEYXRhID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgV0tQYWdl
TG9hZEZpbGVXaXRoVXNlckRhdGEoc2VsZi5fcGFnZVJlZiwgd2tVUkwuZ2V0KCksIHdrQWxsb3dl
ZERpcmVjdG9yeS5nZXQoKSwgKFdLVHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBXS1Bh
Z2VMb2FkRmlsZVdpdGhVc2VyRGF0YShfcGFnZVJlZi5nZXQoKSwgd2tVUkwuZ2V0KCksIHdrQWxs
b3dlZERpcmVjdG9yeS5nZXQoKSwgKFdLVHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAog
LSAodm9pZClsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilIVE1MU3RyaW5nIGJhc2VVUkw6KE5T
VVJMICopYmFzZVVSTApAQCAtMTc1LDcgKzE1Myw3IEBAIC0gKHZvaWQpbG9hZEhUTUxTdHJpbmc6
KE5TU3RyaW5nICopSFRNTFMKICAgICBpZiAodXNlckRhdGEpCiAgICAgICAgIHdrVXNlckRhdGEg
PSBPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZSh1c2VyRGF0YSk7CiAKLSAgICBXS1BhZ2VMb2FkSFRN
TFN0cmluZ1dpdGhVc2VyRGF0YShzZWxmLl9wYWdlUmVmLCB3a0hUTUxTdHJpbmcuZ2V0KCksIHdr
QmFzZVVSTC5nZXQoKSwgKFdLVHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBXS1BhZ2VM
b2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShfcGFnZVJlZi5nZXQoKSwgd2tIVE1MU3RyaW5nLmdl
dCgpLCB3a0Jhc2VVUkwuZ2V0KCksIChXS1R5cGVSZWYpd2tVc2VyRGF0YS5nZXQoKSk7CiB9CiAK
IC0gKHZvaWQpbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlN
RVR5cGUgdGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDoo
TlNVUkwgKiliYXNlVVJMCkBAIC0yMTIsNDQgKzE5MCw0NCBAQCAtICh2b2lkKWxvYWREYXRhOihO
U0RhdGEgKilkYXRhIE1JTUVUeXBlCiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3a1VzZXJE
YXRhID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgV0tQYWdlTG9h
ZERhdGFXaXRoVXNlckRhdGEoc2VsZi5fcGFnZVJlZiwgdG9BUEkod2tEYXRhLmdldCgpKSwgd2tN
SU1FVHlwZS5nZXQoKSwgd2tFbmNvZGluZ05hbWUuZ2V0KCksIHdrQmFzZVVSTC5nZXQoKSwgKFdL
VHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBXS1BhZ2VMb2FkRGF0YVdpdGhVc2VyRGF0
YShfcGFnZVJlZi5nZXQoKSwgdG9BUEkod2tEYXRhLmdldCgpKSwgd2tNSU1FVHlwZS5nZXQoKSwg
d2tFbmNvZGluZ05hbWUuZ2V0KCksIHdrQmFzZVVSTC5nZXQoKSwgKFdLVHlwZVJlZil3a1VzZXJE
YXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClzdG9wTG9hZGluZwogewotICAgIFdLUGFnZVN0b3BM
b2FkaW5nKHNlbGYuX3BhZ2VSZWYpOworICAgIFdLUGFnZVN0b3BMb2FkaW5nKF9wYWdlUmVmLmdl
dCgpKTsKIH0KIAogLSAodm9pZClyZWxvYWQKIHsKLSAgICBXS1BhZ2VSZWxvYWQoc2VsZi5fcGFn
ZVJlZik7CisgICAgV0tQYWdlUmVsb2FkKF9wYWdlUmVmLmdldCgpKTsKIH0KIAogLSAodm9pZCly
ZWxvYWRGcm9tT3JpZ2luCiB7Ci0gICAgV0tQYWdlUmVsb2FkRnJvbU9yaWdpbihzZWxmLl9wYWdl
UmVmKTsKKyAgICBXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKF9wYWdlUmVmLmdldCgpKTsKIH0KIAog
I3ByYWdtYSBtYXJrIEJhY2svRm9yd2FyZAogCiAtICh2b2lkKWdvRm9yd2FyZAogewotICAgIFdL
UGFnZUdvRm9yd2FyZChzZWxmLl9wYWdlUmVmKTsKKyAgICBXS1BhZ2VHb0ZvcndhcmQoX3BhZ2VS
ZWYuZ2V0KCkpOwogfQogCiAtIChCT09MKWNhbkdvRm9yd2FyZAogewotICAgIHJldHVybiBXS1Bh
Z2VDYW5Hb0ZvcndhcmQoc2VsZi5fcGFnZVJlZik7CisgICAgcmV0dXJuIFdLUGFnZUNhbkdvRm9y
d2FyZChfcGFnZVJlZi5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpZ29CYWNrCiB7Ci0gICAgV0tQYWdl
R29CYWNrKHNlbGYuX3BhZ2VSZWYpOworICAgIFdLUGFnZUdvQmFjayhfcGFnZVJlZi5nZXQoKSk7
CiB9CiAKIC0gKEJPT0wpY2FuR29CYWNrCiB7Ci0gICAgcmV0dXJuIFdLUGFnZUNhbkdvQmFjayhz
ZWxmLl9wYWdlUmVmKTsKKyAgICByZXR1cm4gV0tQYWdlQ2FuR29CYWNrKF9wYWdlUmVmLmdldCgp
KTsKIH0KIAogCkBAIC0yNTcsNDYgKzIzNSw0NiBAQCAtIChCT09MKWNhbkdvQmFjawogCiAtIChO
U1VSTCAqKWFjdGl2ZVVSTAogewotICAgIHJldHVybiBhdXRvcmVsZWFzZWQoV0tQYWdlQ29weUFj
dGl2ZVVSTChzZWxmLl9wYWdlUmVmKSk7CisgICAgcmV0dXJuIGF1dG9yZWxlYXNlZChXS1BhZ2VD
b3B5QWN0aXZlVVJMKF9wYWdlUmVmLmdldCgpKSk7CiB9CiAKIC0gKE5TVVJMICopcHJvdmlzaW9u
YWxVUkwKIHsKLSAgICByZXR1cm4gYXV0b3JlbGVhc2VkKFdLUGFnZUNvcHlQcm92aXNpb25hbFVS
TChzZWxmLl9wYWdlUmVmKSk7CisgICAgcmV0dXJuIGF1dG9yZWxlYXNlZChXS1BhZ2VDb3B5UHJv
dmlzaW9uYWxVUkwoX3BhZ2VSZWYuZ2V0KCkpKTsKIH0KIAogLSAoTlNVUkwgKiljb21taXR0ZWRV
UkwKIHsKLSAgICByZXR1cm4gYXV0b3JlbGVhc2VkKFdLUGFnZUNvcHlDb21taXR0ZWRVUkwoc2Vs
Zi5fcGFnZVJlZikpOworICAgIHJldHVybiBhdXRvcmVsZWFzZWQoV0tQYWdlQ29weUNvbW1pdHRl
ZFVSTChfcGFnZVJlZi5nZXQoKSkpOwogfQogCiAjcHJhZ21hIG1hcmsgQWN0aXZlIERvY3VtZW50
IEludHJvc3BlY3Rpb24KIAogLSAoTlNTdHJpbmcgKil0aXRsZQogewotICAgIHJldHVybiBhdXRv
cmVsZWFzZWQoV0tQYWdlQ29weVRpdGxlKHNlbGYuX3BhZ2VSZWYpKTsKKyAgICByZXR1cm4gYXV0
b3JlbGVhc2VkKFdLUGFnZUNvcHlUaXRsZShfcGFnZVJlZi5nZXQoKSkpOwogfQogCiAjcHJhZ21h
IG1hcmsgWm9vbQogCiAtIChDR0Zsb2F0KXRleHRab29tCiB7Ci0gICAgcmV0dXJuIFdLUGFnZUdl
dFRleHRab29tRmFjdG9yKHNlbGYuX3BhZ2VSZWYpOworICAgIHJldHVybiBXS1BhZ2VHZXRUZXh0
Wm9vbUZhY3RvcihfcGFnZVJlZi5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpc2V0VGV4dFpvb206KENH
RmxvYXQpdGV4dFpvb20KIHsKLSAgICByZXR1cm4gV0tQYWdlU2V0VGV4dFpvb21GYWN0b3Ioc2Vs
Zi5fcGFnZVJlZiwgdGV4dFpvb20pOworICAgIHJldHVybiBXS1BhZ2VTZXRUZXh0Wm9vbUZhY3Rv
cihfcGFnZVJlZi5nZXQoKSwgdGV4dFpvb20pOwogfQogCiAtIChDR0Zsb2F0KXBhZ2Vab29tCiB7
Ci0gICAgcmV0dXJuIFdLUGFnZUdldFBhZ2Vab29tRmFjdG9yKHNlbGYuX3BhZ2VSZWYpOworICAg
IHJldHVybiBXS1BhZ2VHZXRQYWdlWm9vbUZhY3RvcihfcGFnZVJlZi5nZXQoKSk7CiB9CiAKIC0g
KHZvaWQpc2V0UGFnZVpvb206KENHRmxvYXQpcGFnZVpvb20KIHsKLSAgICByZXR1cm4gV0tQYWdl
U2V0UGFnZVpvb21GYWN0b3Ioc2VsZi5fcGFnZVJlZiwgcGFnZVpvb20pOworICAgIHJldHVybiBX
S1BhZ2VTZXRQYWdlWm9vbUZhY3RvcihfcGFnZVJlZi5nZXQoKSwgcGFnZVpvb20pOwogfQogCiBA
ZW5kCkBAIC0zMjYsMTIgKzMwNCwxMiBAQCAtICh2b2lkKXNldFBhZ2luYXRpb25Nb2RlOihXS0Jy
b3dzaW5nQ29uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXS1BhZ2VTZXRQYWdpbmF0
aW9uTW9kZShzZWxmLl9wYWdlUmVmLCBtb2RlKTsKKyAgICBXS1BhZ2VTZXRQYWdpbmF0aW9uTW9k
ZShfcGFnZVJlZi5nZXQoKSwgbW9kZSk7CiB9CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0UGFnaW5h
dGlvbk1vZGUpcGFnaW5hdGlvbk1vZGUKIHsKLSAgICBzd2l0Y2ggKFdLUGFnZUdldFBhZ2luYXRp
b25Nb2RlKHNlbGYuX3BhZ2VSZWYpKSB7CisgICAgc3dpdGNoIChXS1BhZ2VHZXRQYWdpbmF0aW9u
TW9kZShfcGFnZVJlZi5nZXQoKSkpIHsKICAgICBjYXNlIGtXS1BhZ2luYXRpb25Nb2RlVW5wYWdp
bmF0ZWQ6CiAgICAgICAgIHJldHVybiBXS1BhZ2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ7CiAgICAg
Y2FzZSBrV0tQYWdpbmF0aW9uTW9kZUxlZnRUb1JpZ2h0OgpAQCAtMzUwLDM3ICszMjgsMzcgQEAg
LSAoV0tCcm93c2luZ0NvbnRleHRQYWdpbmF0aW9uTW9kZSlwYWdpbgogCiAtICh2b2lkKXNldFBh
Z2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnM6KEJPT0wpYmVoYXZlc0xpa2VDb2x1bW5zCiB7Ci0g
ICAgV0tQYWdlU2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhzZWxmLl9wYWdlUmVmLCBi
ZWhhdmVzTGlrZUNvbHVtbnMpOworICAgIFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnMoX3BhZ2VSZWYuZ2V0KCksIGJlaGF2ZXNMaWtlQ29sdW1ucyk7CiB9CiAKIC0gKEJPT0wp
cGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucwogewotICAgIHJldHVybiBXS1BhZ2VHZXRQYWdp
bmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKHNlbGYuX3BhZ2VSZWYpOworICAgIHJldHVybiBXS1Bh
Z2VHZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKF9wYWdlUmVmLmdldCgpKTsKIH0KIAog
LSAodm9pZClzZXRQYWdlTGVuZ3RoOihDR0Zsb2F0KXBhZ2VMZW5ndGgKIHsKLSAgICBXS1BhZ2VT
ZXRQYWdlTGVuZ3RoKHNlbGYuX3BhZ2VSZWYsIHBhZ2VMZW5ndGgpOworICAgIFdLUGFnZVNldFBh
Z2VMZW5ndGgoX3BhZ2VSZWYuZ2V0KCksIHBhZ2VMZW5ndGgpOwogfQogCiAtIChDR0Zsb2F0KXBh
Z2VMZW5ndGgKIHsKLSAgICByZXR1cm4gV0tQYWdlR2V0UGFnZUxlbmd0aChzZWxmLl9wYWdlUmVm
KTsKKyAgICByZXR1cm4gV0tQYWdlR2V0UGFnZUxlbmd0aChfcGFnZVJlZi5nZXQoKSk7CiB9CiAK
IC0gKHZvaWQpc2V0R2FwQmV0d2VlblBhZ2VzOihDR0Zsb2F0KWdhcEJldHdlZW5QYWdlcwogewot
ICAgIFdLUGFnZVNldEdhcEJldHdlZW5QYWdlcyhzZWxmLl9wYWdlUmVmLCBnYXBCZXR3ZWVuUGFn
ZXMpOworICAgIFdLUGFnZVNldEdhcEJldHdlZW5QYWdlcyhfcGFnZVJlZi5nZXQoKSwgZ2FwQmV0
d2VlblBhZ2VzKTsKIH0KIAogLSAoQ0dGbG9hdClnYXBCZXR3ZWVuUGFnZXMKIHsKLSAgICByZXR1
cm4gV0tQYWdlR2V0R2FwQmV0d2VlblBhZ2VzKHNlbGYuX3BhZ2VSZWYpOworICAgIHJldHVybiBX
S1BhZ2VHZXRHYXBCZXR3ZWVuUGFnZXMoX3BhZ2VSZWYuZ2V0KCkpOwogfQogCiAtIChOU1VJbnRl
Z2VyKXBhZ2VDb3VudAogewotICAgIHJldHVybiBXS1BhZ2VHZXRQYWdlQ291bnQoc2VsZi5fcGFn
ZVJlZik7CisgICAgcmV0dXJuIFdLUGFnZUdldFBhZ2VDb3VudChfcGFnZVJlZi5nZXQoKSk7CiB9
CiAKIEBlbmQKQEAgLTQ3Nyw4ICs0NTUsNyBAQCAtIChpZClfaW5pdFdpdGhQYWdlUmVmOihXS1Bh
Z2VSZWYpcGFnZVJlCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
X2RhdGEgPSBbW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRhdGEgYWxsb2NdIGluaXRdOwot
ICAgIF9kYXRhLT5fcGFnZVJlZiA9IHBhZ2VSZWY7CisgICAgX3BhZ2VSZWYgPSBwYWdlUmVmOwog
CiAgICAgc2V0VXBQYWdlTG9hZGVyQ2xpZW50KHNlbGYsIHBhZ2VSZWYpOwogCkBAIC00OTcsMyAr
NDc0LDUgQEAgKyAoTlNNdXRhYmxlU2V0ICopY3VzdG9tU2NoZW1lcwogfQogIAogQGVuZAorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVySW50ZXJuYWwuaAkocmV2aXNpb24gMTU3NjcyKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0IDxXZWJLaXQyL1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5oPgogCisjaWYgV0tfQVBJX0VOQUJMRUQKKwogQGludGVyZmFj
ZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKEludGVybmFsKQogCiAvKiBUaGlzIHNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBmcm9tIGFzc29jaWF0ZSB2aWV3LiAqLwpAQCAtMzYsMyArMzgsNSBA
QCBAaW50ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAoCiArIChOU011dGFibGVT
ZXQgKiljdXN0b21TY2hlbWVzOwogCiBAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaAkocmV2aXNpb24g
MTU3NjcyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBA
CiAjaW1wb3J0IDxXZWJLaXQyL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oPgogI2ltcG9y
dCA8V2ViS2l0Mi9XS0Jhc2UuaD4KIAorI2lmIFdLX0FQSV9FTkFCTEVECisKIGVudW0gewogICAg
IFdLUGFnaW5hdGlvbk1vZGVVbnBhZ2luYXRlZCwKICAgICBXS1BhZ2luYXRpb25Nb2RlTGVmdFRv
UmlnaHQsCkBAIC01MCwzICs1Miw1IEBAIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICgKIEBwcm9wZXJ0eShyZWFkb25seSkgTlNVSW50ZWdlciBwYWdlQ291bnQ7CiAKIEBl
bmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5oCShy
ZXZpc2lvbiAxNTc2NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jy
b3dzaW5nQ29udGV4dEdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxMyBAQAog
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdDIvV0tE
ZWNsYXJhdGlvblNwZWNpZmllcnMuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+
CiAjaW1wb3J0IDxXZWJLaXQyL1dLVXNlclNjcmlwdEluamVjdGlvblRpbWUuaD4KIAotQGNsYXNz
IFdLQnJvd3NpbmdDb250ZXh0R3JvdXBEYXRhOworI2lmIFdLX0FQSV9FTkFCTEVECiAKIFdLX0VY
UE9SVAotQGludGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIDogTlNPYmplY3QgewotQHBy
aXZhdGUKLSAgICBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwRGF0YSAqX2RhdGE7Ci19CitAaW50ZXJm
YWNlIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgOiBOU09iamVjdAogCiAtIChpZClpbml0V2l0aElk
ZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcjsKIApAQCAtNTksMyArNTcsNSBAQCBAaW50
ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgOiBOU09iCiBAcHJvcGVydHkgQk9PTCBhbGxv
d3NQbHVnSW5zOwogCiBAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5n
Q29udGV4dEdyb3VwLm1tCShyZXZpc2lvbiAxNTc2NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw4IEBACiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmgiCiAjaW1w
b3J0ICJXS0Jyb3dzaW5nQ29udGV4dEdyb3VwUHJpdmF0ZS5oIgogCisjaWYgV0tfQVBJX0VOQUJM
RUQKKwogI2ltcG9ydCAiV0tBcnJheS5oIgogI2ltcG9ydCAiV0tQYWdlR3JvdXAuaCIKICNpbXBv
cnQgIldLUHJlZmVyZW5jZXMuaCIKQEAgLTM2LDE2ICszOCw5IEBACiAjaW1wb3J0ICJXS1VSTENG
LmgiCiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKLUBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRl
eHRHcm91cERhdGEgOiBOU09iamVjdCB7Ci1AcHVibGljCitAaW1wbGVtZW50YXRpb24gV0tCcm93
c2luZ0NvbnRleHRHcm91cCB7CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+IF9wYWdl
R3JvdXBSZWY7CiB9Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS0Jyb3dzaW5nQ29udGV4dEdy
b3VwRGF0YQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRHcm91cAog
CiAtIChpZClpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewpAQCAt
NTMsMjQgKzQ4LDE3IEBAIC0gKGlkKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGUK
ICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfZGF0YSA9IFtbV0tC
cm93c2luZ0NvbnRleHRHcm91cERhdGEgYWxsb2NdIGluaXRdOwotICAgIF9kYXRhLT5fcGFnZUdy
b3VwUmVmID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKWlkZW50aWZpZXIpKS5nZXQo
KSkpOworICAgIF9wYWdlR3JvdXBSZWYgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElk
ZW50aWZpZXIoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYp
aWRlbnRpZmllcikpLmdldCgpKSk7CiAKICAgICAvLyBHaXZlIHRoZSBXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwIGEgaWRlbnRpZmllci1sZXNzIHByZWZlcmVuY2VzLCBzbyB0aGF0IHRoZXkKICAgICAv
LyBkb24ndCBnZXQgYXV0b21hdGljYWxseSB3cml0dGVuIHRvIHRoZSBkaXNrLiBUaGUgYXV0b21h
dGljIHdyaXRpbmcgaGFzIHByb3ZlbgogICAgIC8vIGNvbmZ1c2luZyB0byB1c2VycyBvZiB0aGUg
QVBJLgogICAgIFdLUmV0YWluUHRyPFdLUHJlZmVyZW5jZXNSZWY+IHByZWZlcmVuY2VzID0gYWRv
cHRXSyhXS1ByZWZlcmVuY2VzQ3JlYXRlKCkpOwotICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5j
ZXMoX2RhdGEtPl9wYWdlR3JvdXBSZWYuZ2V0KCksIHByZWZlcmVuY2VzLmdldCgpKTsKKyAgICBX
S1BhZ2VHcm91cFNldFByZWZlcmVuY2VzKF9wYWdlR3JvdXBSZWYuZ2V0KCksIHByZWZlcmVuY2Vz
LmdldCgpKTsKIAogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAg
ICBbX2RhdGEgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiAtIChCT09MKWFs
bG93c0phdmFTY3JpcHQKIHsKICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRF
bmFibGVkKFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMoc2VsZi5fcGFnZUdyb3VwUmVmKSk7CkBA
IC0xNjMsNyArMTUxLDkgQEAgLSAodm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0cwogCiAtIChXS1Bh
Z2VHcm91cFJlZilfcGFnZUdyb3VwUmVmCiB7Ci0gICAgcmV0dXJuIF9kYXRhLT5fcGFnZUdyb3Vw
UmVmLmdldCgpOworICAgIHJldHVybiBfcGFnZUdyb3VwUmVmLmdldCgpOwogfQogCiBAZW5kCisK
KyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cFByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwUHJp
dmF0ZS5oCShyZXZpc2lvbiAxNTc2NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiwxMiBAQAogI2ltcG9ydCA8V2ViS2l0Mi9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLmg+
CiAjaW1wb3J0IDxXZWJLaXQyL1dLQmFzZS5oPgogCisjaWYgV0tfQVBJX0VOQUJMRUQKKwogQGlu
dGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIChQcml2YXRlKQogCiBAcHJvcGVydHkocmVh
ZG9ubHkpIFdLUGFnZUdyb3VwUmVmIF9wYWdlR3JvdXBSZWY7CiAKIEBlbmQKKworI2VuZGlmIC8v
IFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S0Nvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS0Nvbm5lY3Rpb24uaAkocmV2aXNpb24gMTU3NjcyKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDgg
KzI1LDExIEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8
V2ViS2l0Mi9XS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0Zv
dW5kYXRpb24uaD4KIAotQGNsYXNzIFdLQ29ubmVjdGlvbiwgV0tDb25uZWN0aW9uRGF0YTsKKyNp
ZiBXS19BUElfRU5BQkxFRAorCitAY2xhc3MgV0tDb25uZWN0aW9uOwogCiBAcHJvdG9jb2wgV0tD
b25uZWN0aW9uRGVsZWdhdGUgPE5TT2JqZWN0PgogCkBAIC0zNiwxMCArMzksNyBAQAogQGVuZAog
CiBXS19FWFBPUlQKLUBpbnRlcmZhY2UgV0tDb25uZWN0aW9uIDogTlNPYmplY3QgewotQHByaXZh
dGUKLSAgICBXS0Nvbm5lY3Rpb25EYXRhICpfZGF0YTsKLX0KK0BpbnRlcmZhY2UgV0tDb25uZWN0
aW9uIDogTlNPYmplY3QKIAogLSAodm9pZClzZW5kTWVzc2FnZVdpdGhOYW1lOihOU1N0cmluZyAq
KW1lc3NhZ2VOYW1lIGJvZHk6KGlkKW1lc3NhZ2VCb2R5OwogCkBAIC00OCwzICs0OCw1IEBAIEBp
bnRlcmZhY2UgV0tDb25uZWN0aW9uIDogTlNPYmplY3QgewogQHByb3BlcnR5KGFzc2lnbikgaWQ8
V0tDb25uZWN0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOwogCiBAZW5kCisKKyNlbmRpZiAvLyBXS19B
UElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tDb25u
ZWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLQ29ubmVjdGlvbi5tbQkocmV2aXNpb24gMTU3NjcyKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tDb25uZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw4IEBACiAjaW1wb3J0ICJXS0Nvbm5lY3Rpb24uaCIKICNpbXBvcnQgIldLQ29ubmVjdGlvbklu
dGVybmFsLmgiCiAKKyNpZiBXS19BUElfRU5BQkxFRAorCiAjaW1wb3J0ICJPYmpDT2JqZWN0R3Jh
cGguaCIKICNpbXBvcnQgIldLQ29ubmVjdGlvblJlZi5oIgogI2ltcG9ydCAiV0tEYXRhLmgiCkBA
IC0zNywyNiArMzksMTUgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotQGludGVyZmFj
ZSBXS0Nvbm5lY3Rpb25EYXRhIDogTlNPYmplY3QgewotQHB1YmxpYworQGltcGxlbWVudGF0aW9u
IFdLQ29ubmVjdGlvbiB7CiAgICAgLy8gVW5kZXJseWluZyBjb25uZWN0aW9uIG9iamVjdC4KICAg
ICBXS1JldGFpblB0cjxXS0Nvbm5lY3Rpb25SZWY+IF9jb25uZWN0aW9uUmVmOwotCi0gICAgLy8g
RGVsZWdhdGUgZm9yIGNhbGxiYWNrcy4KLSAgICBpZDxXS0Nvbm5lY3Rpb25EZWxlZ2F0ZT4gX2Rl
bGVnYXRlOwogfQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tDb25uZWN0aW9uRGF0YQotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV0tDb25uZWN0aW9uCiAKIC0gKHZvaWQpZGVhbGxvYwogewot
ICAgIFdLQ29ubmVjdGlvblNldENvbm5lY3Rpb25DbGllbnQoX2RhdGEtPl9jb25uZWN0aW9uUmVm
LmdldCgpLCAwKTsKKyAgICBXS0Nvbm5lY3Rpb25TZXRDb25uZWN0aW9uQ2xpZW50KF9jb25uZWN0
aW9uUmVmLmdldCgpLCAwKTsKIAotICAgIFtfZGF0YSByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKQEAgLTY1LDE5ICs1Niw3IEBAIC0gKHZvaWQpc2VuZE1lc3NhZ2VXaXRoTmFt
ZTooTlNTdHJpbmcgKikKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKW1lc3Nh
Z2VOYW1lKSk7CiAgICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gd2tNZXNzYWdlQm9keSA9IE9i
akNPYmplY3RHcmFwaDo6Y3JlYXRlKG1lc3NhZ2VCb2R5KTsKIAotICAgIFdLQ29ubmVjdGlvblBv
c3RNZXNzYWdlKF9kYXRhLT5fY29ubmVjdGlvblJlZi5nZXQoKSwgd2tNZXNzYWdlTmFtZS5nZXQo
KSwgKFdLVHlwZVJlZil3a01lc3NhZ2VCb2R5LmdldCgpKTsKLX0KLQotI3ByYWdtYSBtYXJrIERl
bGVnYXRlcwotCi0tIChpZDxXS0Nvbm5lY3Rpb25EZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICBy
ZXR1cm4gX2RhdGEtPl9kZWxlZ2F0ZTsKLX0KLQotLSAodm9pZClzZXREZWxlZ2F0ZTooaWQ8V0tD
b25uZWN0aW9uRGVsZWdhdGU+KWRlbGVnYXRlCi17Ci0gICAgX2RhdGEtPl9kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgIFdLQ29ubmVjdGlvblBvc3RNZXNzYWdlKF9jb25uZWN0aW9uUmVmLmdldCgp
LCB3a01lc3NhZ2VOYW1lLmdldCgpLCAoV0tUeXBlUmVmKXdrTWVzc2FnZUJvZHkuZ2V0KCkpOwog
fQogCiBAZW5kCkBAIC0xMjIsMTIgKzEwMSwxMyBAQCAtIChpZClfaW5pdFdpdGhDb25uZWN0aW9u
UmVmOihXS0Nvbm5lY3RpCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgX2RhdGEgPSBbW1dLQ29ubmVjdGlvbkRhdGEgYWxsb2NdIGluaXRdOwotICAgIF9kYXRhLT5f
Y29ubmVjdGlvblJlZiA9IGNvbm5lY3Rpb25SZWY7CisgICAgX2Nvbm5lY3Rpb25SZWYgPSBjb25u
ZWN0aW9uUmVmOwogCi0gICAgc2V0VXBDbGllbnQoc2VsZiwgX2RhdGEtPl9jb25uZWN0aW9uUmVm
LmdldCgpKTsKKyAgICBzZXRVcENsaWVudChzZWxmLCBfY29ubmVjdGlvblJlZi5nZXQoKSk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAogQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQ29ubmVjdGlvbkludGVy
bmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tD
b25uZWN0aW9uSW50ZXJuYWwuaAkocmV2aXNpb24gMTU3NjcyKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tDb25uZWN0aW9uSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsOCArMjYsMTIgQEAKICNpbXBvcnQgPFdlYktpdDIvV0tDb25uZWN0aW9uLmg+CiAjaW1w
b3J0IDxXZWJLaXQyL1dLQmFzZS5oPgogCisjaWYgV0tfQVBJX0VOQUJMRUQKKwogQGludGVyZmFj
ZSBXS0Nvbm5lY3Rpb24gKEludGVybmFsKQogCiAtIChpZClfaW5pdFdpdGhDb25uZWN0aW9uUmVm
OihXS0Nvbm5lY3Rpb25SZWYpY29ubmVjdGlvblJlZjsKIAogQGVuZAorCisjZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJv
Y2Vzc0dyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tQcm9jZXNzR3JvdXAuaAkocmV2aXNpb24gMTU3NjcyKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tQcm9jZXNzR3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjQs
OSArMjQsMTMgQEAKICAqLwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPFdlYktpdDIvV0tDb25uZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQyL1dLRGVjbGFy
YXRpb25TcGVjaWZpZXJzLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgogCi1A
Y2xhc3MgV0tQcm9jZXNzR3JvdXAsIFdLUHJvY2Vzc0dyb3VwRGF0YSwgV0tDb25uZWN0aW9uOwor
I2lmIFdLX0FQSV9FTkFCTEVECisKK0BjbGFzcyBXS1Byb2Nlc3NHcm91cDsKIAogQHByb3RvY29s
IFdLUHJvY2Vzc0dyb3VwRGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlvbmFsCkBAIC00MCwxNiAr
NDQsMTQgQEAKIEBlbmQKIAogV0tfRVhQT1JUCi1AaW50ZXJmYWNlIFdLUHJvY2Vzc0dyb3VwIDog
TlNPYmplY3QgewotQHByaXZhdGUKLSAgICBXS1Byb2Nlc3NHcm91cERhdGEgKl9kYXRhOwotfQor
QGludGVyZmFjZSBXS1Byb2Nlc3NHcm91cCA6IE5TT2JqZWN0CiAKIC0gKGlkKWluaXRXaXRoSW5q
ZWN0ZWRCdW5kbGVVUkw6KE5TVVJMICopYnVuZGxlVVJMOwogCi0KICNwcmFnbWEgbWFyayBEZWxl
Z2F0ZXMKIAogQHByb3BlcnR5KGFzc2lnbikgaWQ8V0tQcm9jZXNzR3JvdXBEZWxlZ2F0ZT4gZGVs
ZWdhdGU7CiAKIEBlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Byb2Nlc3NHcm91cC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Byb2Nlc3NHcm91cC5tbQkocmV2
aXNpb24gMTU3NjcyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcm9j
ZXNzR3JvdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKICNpbXBvcnQgIldL
UHJvY2Vzc0dyb3VwLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NHcm91cFByaXZhdGUuaCIKIAorI2lm
IFdLX0FQSV9FTkFCTEVECisKICNpbXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgogI2ltcG9ydCAi
V0tDb25uZWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQ29udGV4dC5oIgpAQCAtMzQsMjAg
KzM2LDEwIEBACiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKLUBpbnRlcmZhY2UgV0tQcm9jZXNzR3JvdXBEYXRhIDogTlNPYmplY3QgewotQHB1Ymxp
YworQGltcGxlbWVudGF0aW9uIFdLUHJvY2Vzc0dyb3VwIHsKICAgICAvLyBVbmRlcmx5aW5nIGNv
bnRleHQgb2JqZWN0LgogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gX2NvbnRleHRSZWY7
Ci0KLSAgICAvLyBEZWxlZ2F0ZSBmb3IgY2FsbGJhY2tzLgotICAgIGlkPFdLUHJvY2Vzc0dyb3Vw
RGVsZWdhdGU+IF9kZWxlZ2F0ZTsKIH0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLUHJvY2Vz
c0dyb3VwRGF0YQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzR3JvdXAKIAogc3Rh
dGljIHZvaWQgZGlkQ3JlYXRlQ29ubmVjdGlvbihXS0NvbnRleHRSZWYsIFdLQ29ubmVjdGlvblJl
ZiBjb25uZWN0aW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewpAQCAtMTA1LDQ1ICs5
NywzNCBAQCAtIChpZClpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOihOU1VSTCAqCiAgICAgaWYg
KCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2RhdGEgPSBbW1dLUHJvY2Vzc0dy
b3VwRGF0YSBhbGxvY10gaW5pdF07Ci0gICAgCiAgICAgaWYgKGJ1bmRsZVVSTCkKLSAgICAgICAg
X2RhdGEtPl9jb250ZXh0UmVmID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRC
dW5kbGVQYXRoKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVm
KVtidW5kbGVVUkwgcGF0aF0pKS5nZXQoKSkpOworICAgICAgICBfY29udGV4dFJlZiA9IGFkb3B0
V0soV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilbYnVuZGxlVVJMIHBhdGhdKSkuZ2V0KCkp
KTsKICAgICBlbHNlCi0gICAgICAgIF9kYXRhLT5fY29udGV4dFJlZiA9IGFkb3B0V0soV0tDb250
ZXh0Q3JlYXRlKCkpOworICAgICAgICBfY29udGV4dFJlZiA9IGFkb3B0V0soV0tDb250ZXh0Q3Jl
YXRlKCkpOwogCi0gICAgc2V0VXBDb25uZWN0aW9uQ2xpZW50KHNlbGYsIF9kYXRhLT5fY29udGV4
dFJlZi5nZXQoKSk7Ci0gICAgc2V0VXBJbmVjdGVkQnVuZGxlQ2xpZW50KHNlbGYsIF9kYXRhLT5f
Y29udGV4dFJlZi5nZXQoKSk7CisgICAgc2V0VXBDb25uZWN0aW9uQ2xpZW50KHNlbGYsIF9jb250
ZXh0UmVmLmdldCgpKTsKKyAgICBzZXRVcEluZWN0ZWRCdW5kbGVDbGllbnQoc2VsZiwgX2NvbnRl
eHRSZWYuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwog
ewotICAgIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoX2RhdGEtPl9jb250ZXh0UmVmLmdl
dCgpLCAwKTsKLSAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChfZGF0YS0+X2Nv
bnRleHRSZWYuZ2V0KCksIDApOworICAgIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoX2Nv
bnRleHRSZWYuZ2V0KCksIDApOworICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50
KF9jb250ZXh0UmVmLmdldCgpLCAwKTsKIAotICAgIFtfZGF0YSByZWxlYXNlXTsKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CiAKLS0gKGlkPFdLUHJvY2Vzc0dyb3VwRGVsZWdhdGU+KWRlbGVnYXRl
Ci17Ci0gICAgcmV0dXJuIF9kYXRhLT5fZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2V0RGVsZWdh
dGU6KGlkPFdLUHJvY2Vzc0dyb3VwRGVsZWdhdGU+KWRlbGVnYXRlCi17Ci0gICAgX2RhdGEtPl9k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOwotfQotCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1Byb2Nl
c3NHcm91cCAoUHJpdmF0ZSkKIAogLSAoV0tDb250ZXh0UmVmKV9jb250ZXh0UmVmCiB7Ci0gICAg
cmV0dXJuIF9kYXRhLT5fY29udGV4dFJlZi5nZXQoKTsKKyAgICByZXR1cm4gX2NvbnRleHRSZWYu
Z2V0KCk7CiB9CiAKIEBlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Byb2Nlc3NHcm91cFByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Byb2Nlc3NHcm91
cFByaXZhdGUuaAkocmV2aXNpb24gMTU3NjcyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tQcm9jZXNzR3JvdXBQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDEyIEBACiAjaW1wb3J0IDxXZWJLaXQyL1dLUHJvY2Vzc0dyb3VwLmg+CiAjaW1wb3J0IDxX
ZWJLaXQyL1dLQmFzZS5oPgogCisjaWYgV0tfQVBJX0VOQUJMRUQKKwogQGludGVyZmFjZSBXS1By
b2Nlc3NHcm91cCAoUHJpdmF0ZSkKIAogQHByb3BlcnR5KHJlYWRvbmx5KSBXS0NvbnRleHRSZWYg
X2NvbnRleHRSZWY7CiAKIEBlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>
<flag name="review"
          id="237226"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217832</attachid>
            <date>2013-11-25 14:29:28 -0800</date>
            <delta_ts>2013-11-25 15:47:54 -0800</delta_ts>
            <desc>Remove private _data ivars from interfaces</desc>
            <filename>bug-123065-20131125142937.patch</filename>
            <type>text/plain</type>
            <size>31139</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTc2NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDEzLTExLTI1ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBSZW1vdmUgc29tZSBp
bmRpcmVjdGlvbiB0aGF0IHdhcyBvbmx5IG5lY2Vzc2FyeSBmb3Igc3VwcG9ydGluZyB0aGUgbGVn
YWN5IE9iamVjdGl2ZS1DIHJ1bnRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMzA2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyLmg6IFJlbW92ZWQgX2RhdGEgaXZhciBhbmQKKyAgICAgICAgV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyRGF0YSBjbGFzcyBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciBkZWFsbG9jXSk6IFJlbW92ZWQKKyAgICAgICAgV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyRGF0YSBjbGFzcyBhbmQgbW92ZWQgaXZhcnMgZGlyZWN0bHkg
aW50bworICAgICAgICBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIsIGRlY2xhcmluZyB0aGVt
IGluIHRoZSBAaW1wbGVtZW50YXRpb24uIFJlbW92ZWQgaXZhciBhbmQKKyAgICAgICAgYWNjZXNz
b3JzIGZvciB0aGUgZGVsZWdhdGUgcHJvcGVydGllcywgbGV0dGluZyB0aGUgY29tcGlsZXIgc3lu
dGhlc2l6ZSB0aGVtLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgX3Bh
Z2VSZWZdKTogUmVtb3ZlZCBpbmRpcmVjdGlvbiB2aWEgX2RhdGEuCisgICAgICAgICgtW1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkUmVxdWVzdDp1c2VyRGF0YTpdKTogUmVtb3ZlZCBp
bmRpcmVjdGlvbiB2aWEgLV9wYWdlUmVmLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgbG9hZEZpbGVVUkw6cmVzdHJpY3RUb0ZpbGVzV2l0aGluOnVzZXJEYXRhOl0pOiBE
aXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3Ry
aW5nOmJhc2VVUkw6dXNlckRhdGE6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgbG9hZERhdGE6TUlNRVR5cGU6dGV4dEVuY29kaW5nTmFtZTpiYXNlVVJM
OnVzZXJEYXRhOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyIHN0b3BMb2FkaW5nXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgcmVsb2FkXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgcmVsb2FkRnJvbU9yaWdpbl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIGdvRm9yd2FyZF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIGNhbkdvRm9yd2FyZF0pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGdvQmFja10pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGNhbkdvQmFja10pOiBEaXR0by4KKyAgICAgICAg
KC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOl0p
OiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGJhY2tGb3J3
YXJkTGlzdF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
IGFjdGl2ZVVSTF0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyIHByb3Zpc2lvbmFsVVJMXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgY29tbWl0dGVkVVJMXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgdW5yZWFjaGFibGVVUkxdKTogUmVtb3ZlZCBpZGlyZWN0aW9uIHZp
YSBfZGF0YS4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGVzdGltYXRl
ZFByb2dyZXNzXSk6IFJlbW92ZWQgaW5kaXJlY3Rpb24gdmlhIC1fcGFnZVJlZi4KKyAgICAgICAg
KC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHRpdGxlXSk6IERpdHRvLgorICAgICAgICAo
LVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgdGV4dFpvb21dKTogRGl0dG8uCisgICAgICAg
ICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBzZXRUZXh0Wm9vbTpdKTogRGl0dG8uCisg
ICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBwYWdlWm9vbV0pOiBEaXR0by4K
KyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHNldFBhZ2Vab29tOl0pOiBE
aXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHNldFBhZ2luYXRp
b25Nb2RlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
IHBhZ2luYXRpb25Nb2RlXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgc2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1uczpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBwYWdpbmF0aW9uQmVoYXZlc0xpa2VD
b2x1bW5zXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
c2V0UGFnZUxlbmd0aDpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciBwYWdlTGVuZ3RoXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgc2V0R2FwQmV0d2VlblBhZ2VzOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyIGdhcEJldHdlZW5QYWdlc10pOiBEaXR0by4KKyAgICAg
ICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHBhZ2VDb3VudF0pOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGhhbmRsZV0pOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIF9pbml0V2l0aFBhZ2VSZWY6XSk6
IFJlbW92ZWQgaW5kaXJlY3Rpb24gdmlhIF9kYXRhLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5oOiBSZW1vdmVkIF9kYXRhIGl2YXIgYW5kCisg
ICAgICAgIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBEYXRhIGNsYXNzIGRlY2xhcmF0aW9uLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW06IFJlbW92
ZWQgV0tCcm93c2luZ0NvbnRleHRHcm91cERhdGEgY2xhc3MgYW5kCisgICAgICAgIG1vdmVkIF9w
YWdlR3JvdXBSZWYgaXZhciBkaXJlY3RseSBpbnRvIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAsIGRl
Y2xhcmluZyBpdCBpbiB0aGUKKyAgICAgICAgQGltcGxlbWVudGF0aW9uLgorICAgICAgICAoLVtX
S0Jyb3dzaW5nQ29udGV4dEdyb3VwIGluaXRXaXRoSWRlbnRpZmllcjpdKTogUmVtb3ZlZCBpbmRp
cmVjdGlvbiB2aWEgX2RhdGEuCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxs
b3dzSmF2YVNjcmlwdF0pOiBSZW1vdmVkIGluZGlyZWN0aW9uIHZpYSAtX3BhZ2VHcm91cFJlZi4K
KyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRHcm91cCBzZXRBbGxvd3NKYXZhU2NyaXB0Ol0p
OiBEaXR0by4KKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRHcm91cCBhbGxvd3NKYXZhU2Ny
aXB0TWFya3VwXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIHNl
dEFsbG93c0phdmFTY3JpcHRNYXJrdXA6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwIGFsbG93c1BsdWdJbnNdKTogRGl0dG8uCisgICAgICAgICgtW1dLQnJvd3Np
bmdDb250ZXh0R3JvdXAgc2V0QWxsb3dzUGx1Z0luczpdKTogRGl0dG8uCisgICAgICAgICgtW1dL
QnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6YmFzZVVSTDp3aGl0ZWxpc3Rl
ZFVSTFBhdHRlcm5zOmJsYWNrbGlzdGVkVVJMUGF0dGVybnM6bWFpbkZyYW1lT25seTpdKTogRGl0
dG8uCisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgcmVtb3ZlQWxsVXNlclN0eWxl
U2hlZXRzXSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVz
ZXJTY3JpcHQ6YmFzZVVSTDp3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zOmJsYWNrbGlzdGVkVVJMUGF0
dGVybnM6aW5qZWN0aW9uVGltZTptYWluRnJhbWVPbmx5Ol0pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tCcm93c2luZ0NvbnRleHRHcm91cCByZW1vdmVBbGxVc2VyU2NyaXB0c10pOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRHcm91cCBfcGFnZUdyb3VwUmVmXSk6IFJlbW92ZWQg
aW5kaXJlY3Rpb24gdmlhIF9kYXRhLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tD
b25uZWN0aW9uLmg6IFJlbW92ZWQgX2RhdGEgaXZhciBhbmQgV0tDb25uZWN0aW9uRGF0YSBjbGFz
cyBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS0Nvbm5lY3Rpb24u
bW06IFJlbW92ZWQgV0tDb25uZWN0aW9uRGF0YSBjbGFzcyBhbmQgbW92ZWQgX2Nvbm5lY3Rpb25S
ZWYKKyAgICAgICAgaXZhciBkaXJlY3RseSBpbnRvIFdLQ29ubmVjdGlvbiwgZGVjbGFyaW5nIGl0
IGluIHRoZSBAaW1wbGVtZW50YXRpb24uIFJlbW92ZWQgaXZhciBhbmQKKyAgICAgICAgYWNjZXNz
b3JzIGZvciB0aGUgZGVsZWdhdGUgcHJvcGVydHksIGxldHRpbmcgdGhlIGNvbXBpbGVyIHN5bnRo
ZXNpemUgdGhlbS4KKyAgICAgICAgKC1bV0tDb25uZWN0aW9uIGRlYWxsb2NdKTogUmVtb3ZlZCBp
bmRpcmVjdGlvbiB2aWEgX2RhdGEuCisgICAgICAgICgtW1dLQ29ubmVjdGlvbiBzZW5kTWVzc2Fn
ZVdpdGhOYW1lOmJvZHk6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Nvbm5lY3Rpb24gcmVtb3Rl
T2JqZWN0UmVnaXN0cnldKTogRGl0dG8uCisgICAgICAgIChkaWRSZWNlaXZlTWVzc2FnZSk6IERp
dHRvLgorICAgICAgICAoLVtXS0Nvbm5lY3Rpb24gX2luaXRXaXRoQ29ubmVjdGlvblJlZjpdKTog
RGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Byb2Nlc3NHcm91cC5oOiBS
ZXBsYWNlZCBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIFdLQ29ubmVjdGlvbiB3aXRoIGFuCisgICAg
ICAgIGltcG9ydC4gUmVtb3ZlZCBfZGF0YSBpdmFyIGFuZCBXS1Byb2Nlc3NHcm91cERhdGEgY2xh
c3MgZGVjbGFyYXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tQcm9jZXNzR3Jv
dXAubW06IFJlbW92ZWQgV0tQcm9jZXNzR3JvdXBEYXRhIGNsYXNzIGFuZCBtb3ZlZAorICAgICAg
ICBfY29udGV4dFJlZiBpdmFyIGRpcmVjdGx5IGludG8gV0tQcm9jZXNzR3JvdXAsIGRlY2xhcmlu
ZyBpdCBpbiB0aGUgQGltcGxlbWVudGF0aW9uLiBSZW1vdmVkCisgICAgICAgIGl2YXIgYW5kIGFj
Y2Vzc29ycyBmb3IgdGhlIGRlbGVnYXRlIHByb3BlcnR5LCBsZXR0aW5nIHRoZSBjb21waWxlciBz
eW50aGVzaXplIHRoZW0uCisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIGluaXRXaXRoSW5qZWN0
ZWRCdW5kbGVVUkw6XSk6IFJlbW92ZWQgaW5kaXJlY3Rpb24gdmlhIF9kYXRhLgorICAgICAgICAo
LVtXS1Byb2Nlc3NHcm91cCBkZWFsbG9jXSk6IERpdHRvLgorICAgICAgICAoLVtXS1Byb2Nlc3NH
cm91cCBfY29udGV4dFJlZl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQcm9jZXNzR3JvdXAgX2dl
b2xvY2F0aW9uUHJvdmlkZXJdKTogRGl0dG8uCisKIDIwMTMtMTEtMjUgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNTk3NDAuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaAkocmV2aXNpb24g
MTU5NzYxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lm
IFdLX0FQSV9FTkFCTEVECiAKLUBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEYXRh
OwogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0OwogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0SXRl
bTsKIEBwcm90b2NvbCBXS0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZTsKQEAgLTM2LDEw
ICszNSw3IEBACiBAcHJvdG9jb2wgV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZTsKIAog
V0tfQVBJX0NMQVNTCi1AaW50ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciA6IE5T
T2JqZWN0IHsKLUBwcml2YXRlCi0gICAgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyRGF0YSAq
X2RhdGE7Ci19CitAaW50ZXJmYWNlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciA6IE5TT2Jq
ZWN0CiAKICNwcmFnbWEgbWFyayBEZWxlZ2F0ZXMKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlci5tbQkocmV2aXNpb24gMTU5NzYxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC05Nyw2NCArOTcsMjUgQEAgTlNTdHJpbmcgKiBjb25zdCBXS0FjdGlvbkZyYW1lTmFtZUtleSA9
IAogTlNTdHJpbmcgKiBjb25zdCBXS0FjdGlvbk9yaWdpbmF0aW5nRnJhbWVVUkxLZXkgPSBAIldL
QWN0aW9uT3JpZ2luYXRpbmdGcmFtZVVSTEtleSI7CiBOU1N0cmluZyAqIGNvbnN0IFdLQWN0aW9u
Q2FuU2hvd01JTUVUeXBlS2V5ID0gQCJXS0FjdGlvbkNhblNob3dNSU1FVHlwZUtleSI7CiAKLUBp
bnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyRGF0YSA6IE5TT2JqZWN0IHsKLUBw
dWJsaWMKK0BpbXBsZW1lbnRhdGlvbiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgewogICAg
IC8vIFVuZGVybHlpbmcgV0tQYWdlUmVmLgogICAgIFdLUmV0YWluUHRyPFdLUGFnZVJlZj4gX3Bh
Z2VSZWY7Ci0gICAgCi0gICAgLy8gRGVsZWdhdGUgZm9yIGxvYWQgY2FsbGJhY2tzLgotICAgIGlk
PFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPiBfbG9hZERlbGVnYXRlOwotI2lmIFBMQVRG
T1JNKElPUykKLSAgICBpZCA8V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVJbnRlcm5hbD4g
X2xvYWREZWxlZ2F0ZUludGVybmFsOwotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKLQotICAgIC8v
IERlbGVnYXRlIGZvciBwb2xpY3kgY2FsbGJhY2tzLgotICAgIGlkPFdLQnJvd3NpbmdDb250ZXh0
UG9saWN5RGVsZWdhdGU+IF9wb2xpY3lEZWxlZ2F0ZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YWdlTG9hZFN0YXRlT2JzZXJ2ZXI+IF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXI7CiB9Ci1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEYXRhCi1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIKIAogLSAodm9pZClk
ZWFsbG9jCiB7Ci0gICAgdG9JbXBsKF9kYXRhLT5fcGFnZVJlZi5nZXQoKSktPnBhZ2VMb2FkU3Rh
dGUoKS5yZW1vdmVPYnNlcnZlcigqX2RhdGEtPl9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIpOwotICAg
IFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoX2RhdGEtPl9wYWdlUmVmLmdldCgpLCBudWxscHRy
KTsKLSAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KF9kYXRhLT5fcGFnZVJlZi5nZXQoKSwg
bnVsbHB0cik7CisgICAgdG9JbXBsKF9wYWdlUmVmLmdldCgpKS0+cGFnZUxvYWRTdGF0ZSgpLnJl
bW92ZU9ic2VydmVyKCpfcGFnZUxvYWRTdGF0ZU9ic2VydmVyKTsKKyAgICBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KF9wYWdlUmVmLmdldCgpLCBudWxscHRyKTsKKyAgICBXS1BhZ2VTZXRQYWdl
UG9saWN5Q2xpZW50KF9wYWdlUmVmLmdldCgpLCBudWxscHRyKTsKIAotICAgIFtfZGF0YSByZWxl
YXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKFdLUGFnZVJlZilfcGFnZVJlZgog
ewotICAgIHJldHVybiBfZGF0YS0+X3BhZ2VSZWYuZ2V0KCk7Ci19Ci0KLSNwcmFnbWEgbWFyayBE
ZWxlZ2F0ZXMKLQotLSAoaWQ8V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGU+KWxvYWREZWxl
Z2F0ZQotewotICAgIHJldHVybiBfZGF0YS0+X2xvYWREZWxlZ2F0ZTsKLX0KLQotLSAodm9pZClz
ZXRMb2FkRGVsZWdhdGU6KGlkPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPilsb2FkRGVs
ZWdhdGUKLXsKLSAgICBfZGF0YS0+X2xvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZTsKLX0KLQot
LSAoaWQ8V0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZT4pcG9saWN5RGVsZWdhdGUKLXsK
LSAgICByZXR1cm4gX2RhdGEtPl9wb2xpY3lEZWxlZ2F0ZTsKLX0KLQotLSAodm9pZClzZXRQb2xp
Y3lEZWxlZ2F0ZTooaWQ8V0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZT4pcG9saWN5RGVs
ZWdhdGUKLXsKLSAgICBfZGF0YS0+X3BvbGljeURlbGVnYXRlID0gcG9saWN5RGVsZWdhdGU7Cisg
ICAgcmV0dXJuIF9wYWdlUmVmLmdldCgpOwogfQogCiAjcHJhZ21hIG1hcmsgTG9hZGluZwpAQCAt
MTkyLDcgKzE1Myw3IEBAIC0gKHZvaWQpbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXUK
ICAgICBpZiAodXNlckRhdGEpCiAgICAgICAgIHdrVXNlckRhdGEgPSBPYmpDT2JqZWN0R3JhcGg6
OmNyZWF0ZSh1c2VyRGF0YSk7CiAKLSAgICBXS1BhZ2VMb2FkVVJMUmVxdWVzdFdpdGhVc2VyRGF0
YShzZWxmLl9wYWdlUmVmLCB3a1JlcXVlc3QuZ2V0KCksIChXS1R5cGVSZWYpd2tVc2VyRGF0YS5n
ZXQoKSk7CisgICAgV0tQYWdlTG9hZFVSTFJlcXVlc3RXaXRoVXNlckRhdGEoX3BhZ2VSZWYuZ2V0
KCksIHdrUmVxdWVzdC5nZXQoKSwgKFdLVHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAog
LSAodm9pZClsb2FkRmlsZVVSTDooTlNVUkwgKilVUkwgcmVzdHJpY3RUb0ZpbGVzV2l0aGluOihO
U1VSTCAqKWFsbG93ZWREaXJlY3RvcnkKQEAgLTIxMiw3ICsxNzMsNyBAQCAtICh2b2lkKWxvYWRG
aWxlVVJMOihOU1VSTCAqKVVSTCByZXN0cmljCiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3
a1VzZXJEYXRhID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgV0tQ
YWdlTG9hZEZpbGVXaXRoVXNlckRhdGEoc2VsZi5fcGFnZVJlZiwgd2tVUkwuZ2V0KCksIHdrQWxs
b3dlZERpcmVjdG9yeS5nZXQoKSwgKFdLVHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBX
S1BhZ2VMb2FkRmlsZVdpdGhVc2VyRGF0YShfcGFnZVJlZi5nZXQoKSwgd2tVUkwuZ2V0KCksIHdr
QWxsb3dlZERpcmVjdG9yeS5nZXQoKSwgKFdLVHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKIH0K
IAogLSAodm9pZClsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilIVE1MU3RyaW5nIGJhc2VVUkw6
KE5TVVJMICopYmFzZVVSTApAQCAtMjM0LDcgKzE5NSw3IEBAIC0gKHZvaWQpbG9hZEhUTUxTdHJp
bmc6KE5TU3RyaW5nICopSFRNTFMKICAgICBpZiAodXNlckRhdGEpCiAgICAgICAgIHdrVXNlckRh
dGEgPSBPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZSh1c2VyRGF0YSk7CiAKLSAgICBXS1BhZ2VMb2Fk
SFRNTFN0cmluZ1dpdGhVc2VyRGF0YShzZWxmLl9wYWdlUmVmLCB3a0hUTUxTdHJpbmcuZ2V0KCks
IHdrQmFzZVVSTC5nZXQoKSwgKFdLVHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBXS1Bh
Z2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShfcGFnZVJlZi5nZXQoKSwgd2tIVE1MU3RyaW5n
LmdldCgpLCB3a0Jhc2VVUkwuZ2V0KCksIChXS1R5cGVSZWYpd2tVc2VyRGF0YS5nZXQoKSk7CiB9
CiAKIC0gKHZvaWQpbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICop
TUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMCkBAIC0yNzEsNTQgKzIzMiw1NCBAQCAtICh2b2lkKWxvYWREYXRh
OihOU0RhdGEgKilkYXRhIE1JTUVUeXBlCiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3a1Vz
ZXJEYXRhID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgV0tQYWdl
TG9hZERhdGFXaXRoVXNlckRhdGEoc2VsZi5fcGFnZVJlZiwgdG9BUEkod2tEYXRhLmdldCgpKSwg
d2tNSU1FVHlwZS5nZXQoKSwgd2tFbmNvZGluZ05hbWUuZ2V0KCksIHdrQmFzZVVSTC5nZXQoKSwg
KFdLVHlwZVJlZil3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBXS1BhZ2VMb2FkRGF0YVdpdGhVc2Vy
RGF0YShfcGFnZVJlZi5nZXQoKSwgdG9BUEkod2tEYXRhLmdldCgpKSwgd2tNSU1FVHlwZS5nZXQo
KSwgd2tFbmNvZGluZ05hbWUuZ2V0KCksIHdrQmFzZVVSTC5nZXQoKSwgKFdLVHlwZVJlZil3a1Vz
ZXJEYXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClzdG9wTG9hZGluZwogewotICAgIFdLUGFnZVN0
b3BMb2FkaW5nKHNlbGYuX3BhZ2VSZWYpOworICAgIFdLUGFnZVN0b3BMb2FkaW5nKF9wYWdlUmVm
LmdldCgpKTsKIH0KIAogLSAodm9pZClyZWxvYWQKIHsKLSAgICBXS1BhZ2VSZWxvYWQoc2VsZi5f
cGFnZVJlZik7CisgICAgV0tQYWdlUmVsb2FkKF9wYWdlUmVmLmdldCgpKTsKIH0KIAogLSAodm9p
ZClyZWxvYWRGcm9tT3JpZ2luCiB7Ci0gICAgV0tQYWdlUmVsb2FkRnJvbU9yaWdpbihzZWxmLl9w
YWdlUmVmKTsKKyAgICBXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKF9wYWdlUmVmLmdldCgpKTsKIH0K
IAogI3ByYWdtYSBtYXJrIEJhY2svRm9yd2FyZAogCiAtICh2b2lkKWdvRm9yd2FyZAogewotICAg
IFdLUGFnZUdvRm9yd2FyZChzZWxmLl9wYWdlUmVmKTsKKyAgICBXS1BhZ2VHb0ZvcndhcmQoX3Bh
Z2VSZWYuZ2V0KCkpOwogfQogCiAtIChCT09MKWNhbkdvRm9yd2FyZAogewotICAgIHJldHVybiBX
S1BhZ2VDYW5Hb0ZvcndhcmQoc2VsZi5fcGFnZVJlZik7CisgICAgcmV0dXJuIFdLUGFnZUNhbkdv
Rm9yd2FyZChfcGFnZVJlZi5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpZ29CYWNrCiB7Ci0gICAgV0tQ
YWdlR29CYWNrKHNlbGYuX3BhZ2VSZWYpOworICAgIFdLUGFnZUdvQmFjayhfcGFnZVJlZi5nZXQo
KSk7CiB9CiAKIC0gKEJPT0wpY2FuR29CYWNrCiB7Ci0gICAgcmV0dXJuIFdLUGFnZUNhbkdvQmFj
ayhzZWxmLl9wYWdlUmVmKTsKKyAgICByZXR1cm4gV0tQYWdlQ2FuR29CYWNrKF9wYWdlUmVmLmdl
dCgpKTsKIH0KIAogLSAodm9pZClnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtICopaXRlbQogewotICAgIHRvSW1wbChzZWxmLl9wYWdlUmVmKS0+Z29Ub0JhY2tG
b3J3YXJkSXRlbSgmaXRlbS5faXRlbSk7CisgICAgdG9JbXBsKF9wYWdlUmVmLmdldCgpKS0+Z29U
b0JhY2tGb3J3YXJkSXRlbSgmaXRlbS5faXRlbSk7CiB9CiAKIC0gKFdLQmFja0ZvcndhcmRMaXN0
ICopYmFja0ZvcndhcmRMaXN0CiB7Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0KiBsaXN0ID0gdG9J
bXBsKHNlbGYuX3BhZ2VSZWYpLT5iYWNrRm9yd2FyZExpc3QoKTsKKyAgICBXZWJCYWNrRm9yd2Fy
ZExpc3QqIGxpc3QgPSB0b0ltcGwoX3BhZ2VSZWYuZ2V0KCkpLT5iYWNrRm9yd2FyZExpc3QoKTsK
ICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTMyOSw1NiArMjkwLDU2
IEBAIC0gKFdLQmFja0ZvcndhcmRMaXN0ICopYmFja0ZvcndhcmRMaXN0CiAKIC0gKE5TVVJMICop
YWN0aXZlVVJMCiB7Ci0gICAgcmV0dXJuIGF1dG9yZWxlYXNlZChXS1BhZ2VDb3B5QWN0aXZlVVJM
KHNlbGYuX3BhZ2VSZWYpKTsKKyAgICByZXR1cm4gYXV0b3JlbGVhc2VkKFdLUGFnZUNvcHlBY3Rp
dmVVUkwoX3BhZ2VSZWYuZ2V0KCkpKTsKIH0KIAogLSAoTlNVUkwgKilwcm92aXNpb25hbFVSTAog
ewotICAgIHJldHVybiBhdXRvcmVsZWFzZWQoV0tQYWdlQ29weVByb3Zpc2lvbmFsVVJMKHNlbGYu
X3BhZ2VSZWYpKTsKKyAgICByZXR1cm4gYXV0b3JlbGVhc2VkKFdLUGFnZUNvcHlQcm92aXNpb25h
bFVSTChfcGFnZVJlZi5nZXQoKSkpOwogfQogCiAtIChOU1VSTCAqKWNvbW1pdHRlZFVSTAogewot
ICAgIHJldHVybiBhdXRvcmVsZWFzZWQoV0tQYWdlQ29weUNvbW1pdHRlZFVSTChzZWxmLl9wYWdl
UmVmKSk7CisgICAgcmV0dXJuIGF1dG9yZWxlYXNlZChXS1BhZ2VDb3B5Q29tbWl0dGVkVVJMKF9w
YWdlUmVmLmdldCgpKSk7CiB9CiAKIC0gKE5TVVJMICopdW5yZWFjaGFibGVVUkwKIHsKLSAgICBy
ZXR1cm4gW05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzp0b0ltcGwoX2RhdGEtPl9wYWdlUmVm
LmdldCgpKS0+cGFnZUxvYWRTdGF0ZSgpLnVucmVhY2hhYmxlVVJMKCkgcmVsYXRpdmVUb1VSTDpu
aWxdOworICAgIHJldHVybiBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnRvSW1wbChfcGFn
ZVJlZi5nZXQoKSktPnBhZ2VMb2FkU3RhdGUoKS51bnJlYWNoYWJsZVVSTCgpIHJlbGF0aXZlVG9V
Ukw6bmlsXTsKIH0KIAogLSAoZG91YmxlKWVzdGltYXRlZFByb2dyZXNzCiB7Ci0gICAgcmV0dXJu
IHRvSW1wbChzZWxmLl9wYWdlUmVmKS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKKyAgICByZXR1cm4g
dG9JbXBsKF9wYWdlUmVmLmdldCgpKS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKIH0KIAogI3ByYWdt
YSBtYXJrIEFjdGl2ZSBEb2N1bWVudCBJbnRyb3NwZWN0aW9uCiAKIC0gKE5TU3RyaW5nICopdGl0
bGUKIHsKLSAgICByZXR1cm4gYXV0b3JlbGVhc2VkKFdLUGFnZUNvcHlUaXRsZShzZWxmLl9wYWdl
UmVmKSk7CisgICAgcmV0dXJuIGF1dG9yZWxlYXNlZChXS1BhZ2VDb3B5VGl0bGUoX3BhZ2VSZWYu
Z2V0KCkpKTsKIH0KIAogI3ByYWdtYSBtYXJrIFpvb20KIAogLSAoQ0dGbG9hdCl0ZXh0Wm9vbQog
ewotICAgIHJldHVybiBXS1BhZ2VHZXRUZXh0Wm9vbUZhY3RvcihzZWxmLl9wYWdlUmVmKTsKKyAg
ICByZXR1cm4gV0tQYWdlR2V0VGV4dFpvb21GYWN0b3IoX3BhZ2VSZWYuZ2V0KCkpOwogfQogCiAt
ICh2b2lkKXNldFRleHRab29tOihDR0Zsb2F0KXRleHRab29tCiB7Ci0gICAgcmV0dXJuIFdLUGFn
ZVNldFRleHRab29tRmFjdG9yKHNlbGYuX3BhZ2VSZWYsIHRleHRab29tKTsKKyAgICByZXR1cm4g
V0tQYWdlU2V0VGV4dFpvb21GYWN0b3IoX3BhZ2VSZWYuZ2V0KCksIHRleHRab29tKTsKIH0KIAog
LSAoQ0dGbG9hdClwYWdlWm9vbQogewotICAgIHJldHVybiBXS1BhZ2VHZXRQYWdlWm9vbUZhY3Rv
cihzZWxmLl9wYWdlUmVmKTsKKyAgICByZXR1cm4gV0tQYWdlR2V0UGFnZVpvb21GYWN0b3IoX3Bh
Z2VSZWYuZ2V0KCkpOwogfQogCiAtICh2b2lkKXNldFBhZ2Vab29tOihDR0Zsb2F0KXBhZ2Vab29t
CiB7Ci0gICAgcmV0dXJuIFdLUGFnZVNldFBhZ2Vab29tRmFjdG9yKHNlbGYuX3BhZ2VSZWYsIHBh
Z2Vab29tKTsKKyAgICByZXR1cm4gV0tQYWdlU2V0UGFnZVpvb21GYWN0b3IoX3BhZ2VSZWYuZ2V0
KCksIHBhZ2Vab29tKTsKIH0KIAogQGVuZApAQCAtNDA4LDEyICszNjksMTIgQEAgLSAodm9pZClz
ZXRQYWdpbmF0aW9uTW9kZTooV0tCcm93c2luZ0NvbgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgV0tQYWdlU2V0UGFnaW5hdGlvbk1vZGUoc2VsZi5fcGFnZVJlZiwgbW9kZSk7CisgICAg
V0tQYWdlU2V0UGFnaW5hdGlvbk1vZGUoX3BhZ2VSZWYuZ2V0KCksIG1vZGUpOwogfQogCiAtIChX
S0Jyb3dzaW5nQ29udGV4dFBhZ2luYXRpb25Nb2RlKXBhZ2luYXRpb25Nb2RlCiB7Ci0gICAgc3dp
dGNoIChXS1BhZ2VHZXRQYWdpbmF0aW9uTW9kZShzZWxmLl9wYWdlUmVmKSkgeworICAgIHN3aXRj
aCAoV0tQYWdlR2V0UGFnaW5hdGlvbk1vZGUoX3BhZ2VSZWYuZ2V0KCkpKSB7CiAgICAgY2FzZSBr
V0tQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOgogICAgICAgICByZXR1cm4gV0tQYWdpbmF0aW9u
TW9kZVVucGFnaW5hdGVkOwogICAgIGNhc2Uga1dLUGFnaW5hdGlvbk1vZGVMZWZ0VG9SaWdodDoK
QEAgLTQzMiw0MiArMzkzLDQyIEBAIC0gKFdLQnJvd3NpbmdDb250ZXh0UGFnaW5hdGlvbk1vZGUp
cGFnaW4KIAogLSAodm9pZClzZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zOihCT09MKWJl
aGF2ZXNMaWtlQ29sdW1ucwogewotICAgIFdLUGFnZVNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNv
bHVtbnMoc2VsZi5fcGFnZVJlZiwgYmVoYXZlc0xpa2VDb2x1bW5zKTsKKyAgICBXS1BhZ2VTZXRQ
YWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKF9wYWdlUmVmLmdldCgpLCBiZWhhdmVzTGlrZUNv
bHVtbnMpOwogfQogCiAtIChCT09MKXBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMKIHsKLSAg
ICByZXR1cm4gV0tQYWdlR2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhzZWxmLl9wYWdl
UmVmKTsKKyAgICByZXR1cm4gV0tQYWdlR2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhf
cGFnZVJlZi5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpc2V0UGFnZUxlbmd0aDooQ0dGbG9hdClwYWdl
TGVuZ3RoCiB7Ci0gICAgV0tQYWdlU2V0UGFnZUxlbmd0aChzZWxmLl9wYWdlUmVmLCBwYWdlTGVu
Z3RoKTsKKyAgICBXS1BhZ2VTZXRQYWdlTGVuZ3RoKF9wYWdlUmVmLmdldCgpLCBwYWdlTGVuZ3Ro
KTsKIH0KIAogLSAoQ0dGbG9hdClwYWdlTGVuZ3RoCiB7Ci0gICAgcmV0dXJuIFdLUGFnZUdldFBh
Z2VMZW5ndGgoc2VsZi5fcGFnZVJlZik7CisgICAgcmV0dXJuIFdLUGFnZUdldFBhZ2VMZW5ndGgo
X3BhZ2VSZWYuZ2V0KCkpOwogfQogCiAtICh2b2lkKXNldEdhcEJldHdlZW5QYWdlczooQ0dGbG9h
dClnYXBCZXR3ZWVuUGFnZXMKIHsKLSAgICBXS1BhZ2VTZXRHYXBCZXR3ZWVuUGFnZXMoc2VsZi5f
cGFnZVJlZiwgZ2FwQmV0d2VlblBhZ2VzKTsKKyAgICBXS1BhZ2VTZXRHYXBCZXR3ZWVuUGFnZXMo
X3BhZ2VSZWYuZ2V0KCksIGdhcEJldHdlZW5QYWdlcyk7CiB9CiAKIC0gKENHRmxvYXQpZ2FwQmV0
d2VlblBhZ2VzCiB7Ci0gICAgcmV0dXJuIFdLUGFnZUdldEdhcEJldHdlZW5QYWdlcyhzZWxmLl9w
YWdlUmVmKTsKKyAgICByZXR1cm4gV0tQYWdlR2V0R2FwQmV0d2VlblBhZ2VzKF9wYWdlUmVmLmdl
dCgpKTsKIH0KIAogLSAoTlNVSW50ZWdlcilwYWdlQ291bnQKIHsKLSAgICByZXR1cm4gV0tQYWdl
R2V0UGFnZUNvdW50KHNlbGYuX3BhZ2VSZWYpOworICAgIHJldHVybiBXS1BhZ2VHZXRQYWdlQ291
bnQoX3BhZ2VSZWYuZ2V0KCkpOwogfQogCiAtIChXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAqKWhh
bmRsZQogewotICAgIHJldHVybiBbW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2lu
aXRXaXRoUGFnZUlEOnRvSW1wbChzZWxmLl9wYWdlUmVmKS0+cGFnZUlEKCldIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gW1tbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0
aFBhZ2VJRDp0b0ltcGwoX3BhZ2VSZWYuZ2V0KCkpLT5wYWdlSUQoKV0gYXV0b3JlbGVhc2VdOwog
fQogCiBAZW5kCkBAIC02ODYsMTggKzY0Nyw2IEBAIHN0YXRpYyB2b2lkIHNldFVwUGFnZVBvbGlj
eUNsaWVudChXS0Jyb3cKICAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHBhZ2VSZWYsICZw
b2xpY3lDbGllbnQpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQotLSAoaWQgPFdLQnJvd3NpbmdD
b250ZXh0TG9hZERlbGVnYXRlSW50ZXJuYWw+KWxvYWREZWxlZ2F0ZUludGVybmFsCi17Ci0gICAg
cmV0dXJuIF9kYXRhLT5fbG9hZERlbGVnYXRlSW50ZXJuYWw7Ci19Ci0KLS0gKHZvaWQpc2V0TG9h
ZERlbGVnYXRlSW50ZXJuYWw6KGlkIDxXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZUludGVy
bmFsPilsb2FkRGVsZWdhdGVJbnRlcm5hbAotewotICAgIF9kYXRhLT5fbG9hZERlbGVnYXRlSW50
ZXJuYWwgPSBsb2FkRGVsZWdhdGVJbnRlcm5hbDsKLX0KLSNlbmRpZiAvLyBQTEFURk9STShJT1Mp
Ci0KIC8qIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gYXNzb2NpYXRlIHZpZXcuICov
CiAKIC0gKGlkKV9pbml0V2l0aFBhZ2VSZWY6KFdLUGFnZVJlZilwYWdlUmVmCkBAIC03MDYsMTEg
KzY1NSwxMCBAQCAtIChpZClfaW5pdFdpdGhQYWdlUmVmOihXS1BhZ2VSZWYpcGFnZVJlCiAgICAg
aWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2RhdGEgPSBbW1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckRhdGEgYWxsb2NdIGluaXRdOwotICAgIF9kYXRhLT5fcGFnZVJl
ZiA9IHBhZ2VSZWY7CisgICAgX3BhZ2VSZWYgPSBwYWdlUmVmOwogCi0gICAgX2RhdGEtPl9wYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZl
cj4oc2VsZik7Ci0gICAgdG9JbXBsKF9kYXRhLT5fcGFnZVJlZi5nZXQoKSktPnBhZ2VMb2FkU3Rh
dGUoKS5hZGRPYnNlcnZlcigqX2RhdGEtPl9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIpOworICAgIF9w
YWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNl
cnZlcj4oc2VsZik7CisgICAgdG9JbXBsKF9wYWdlUmVmLmdldCgpKS0+cGFnZUxvYWRTdGF0ZSgp
LmFkZE9ic2VydmVyKCpfcGFnZUxvYWRTdGF0ZU9ic2VydmVyKTsKIAogICAgIHNldFVwUGFnZUxv
YWRlckNsaWVudChzZWxmLCBwYWdlUmVmKTsKICAgICBzZXRVcFBhZ2VQb2xpY3lDbGllbnQoc2Vs
ZiwgcGFnZVJlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jy
b3dzaW5nQ29udGV4dEdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5oCShyZXZpc2lvbiAxNTk3NjEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCw4IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdDIvV0tVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZS5oPgogCi1AY2xhc3MgV0tCcm93c2luZ0NvbnRleHRHcm91cERhdGE7Ci0KIFdLX0FQSV9DTEFT
UwotQGludGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIDogTlNPYmplY3QgewotQHByaXZh
dGUKLSAgICBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwRGF0YSAqX2RhdGE7Ci19CitAaW50ZXJmYWNl
IFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgOiBOU09iamVjdAogCiAtIChpZClpbml0V2l0aElkZW50
aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcjsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1t
CShyZXZpc2lvbiAxNTk3NjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNiArNDIsOSBA
QAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1AaW50ZXJmYWNlIFdLQnJvd3NpbmdDb250
ZXh0R3JvdXBEYXRhIDogTlNPYmplY3QgewotQHB1YmxpYworQGltcGxlbWVudGF0aW9uIFdLQnJv
d3NpbmdDb250ZXh0R3JvdXAgewogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBfcGFn
ZUdyb3VwUmVmOwogfQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRH
cm91cERhdGEKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAK
IAogLSAoaWQpaW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKQEAg
LTU5LDUyICs1Miw0NSBAQCAtIChpZClpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRl
CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2RhdGEgPSBbW1dL
QnJvd3NpbmdDb250ZXh0R3JvdXBEYXRhIGFsbG9jXSBpbml0XTsKLSAgICBfZGF0YS0+X3BhZ2VH
cm91cFJlZiA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilpZGVudGlmaWVyKSkuZ2V0
KCkpKTsKKyAgICBfcGFnZUdyb3VwUmVmID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJ
ZGVudGlmaWVyKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVm
KWlkZW50aWZpZXIpKS5nZXQoKSkpOwogCiAgICAgLy8gR2l2ZSB0aGUgV0tCcm93c2luZ0NvbnRl
eHRHcm91cCBhIGlkZW50aWZpZXItbGVzcyBwcmVmZXJlbmNlcywgc28gdGhhdCB0aGV5CiAgICAg
Ly8gZG9uJ3QgZ2V0IGF1dG9tYXRpY2FsbHkgd3JpdHRlbiB0byB0aGUgZGlzay4gVGhlIGF1dG9t
YXRpYyB3cml0aW5nIGhhcyBwcm92ZW4KICAgICAvLyBjb25mdXNpbmcgdG8gdXNlcnMgb2YgdGhl
IEFQSS4KICAgICBXS1JldGFpblB0cjxXS1ByZWZlcmVuY2VzUmVmPiBwcmVmZXJlbmNlcyA9IGFk
b3B0V0soV0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKLSAgICBXS1BhZ2VHcm91cFNldFByZWZlcmVu
Y2VzKF9kYXRhLT5fcGFnZUdyb3VwUmVmLmdldCgpLCBwcmVmZXJlbmNlcy5nZXQoKSk7CisgICAg
V0tQYWdlR3JvdXBTZXRQcmVmZXJlbmNlcyhfcGFnZUdyb3VwUmVmLmdldCgpLCBwcmVmZXJlbmNl
cy5nZXQoKSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgW19kYXRhIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogLSAoQk9PTClh
bGxvd3NKYXZhU2NyaXB0CiB7Ci0gICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0
RW5hYmxlZChXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHNlbGYuX3BhZ2VHcm91cFJlZikpOwor
ICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdEVuYWJsZWQoV0tQYWdlR3JvdXBH
ZXRQcmVmZXJlbmNlcyhfcGFnZUdyb3VwUmVmLmdldCgpKSk7CiB9CiAKIC0gKHZvaWQpc2V0QWxs
b3dzSmF2YVNjcmlwdDooQk9PTClhbGxvd3NKYXZhU2NyaXB0CiB7Ci0gICAgV0tQcmVmZXJlbmNl
c1NldEphdmFTY3JpcHRFbmFibGVkKFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMoc2VsZi5fcGFn
ZUdyb3VwUmVmKSwgYWxsb3dzSmF2YVNjcmlwdCk7CisgICAgV0tQcmVmZXJlbmNlc1NldEphdmFT
Y3JpcHRFbmFibGVkKFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMoX3BhZ2VHcm91cFJlZi5nZXQo
KSksIGFsbG93c0phdmFTY3JpcHQpOwogfQogCiAtIChCT09MKWFsbG93c0phdmFTY3JpcHRNYXJr
dXAKIHsKLSAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRNYXJrdXBFbmFibGVk
KFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMoc2VsZi5fcGFnZUdyb3VwUmVmKSk7CisgICAgcmV0
dXJuIFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0TWFya3VwRW5hYmxlZChXS1BhZ2VHcm91cEdl
dFByZWZlcmVuY2VzKF9wYWdlR3JvdXBSZWYuZ2V0KCkpKTsKIH0KIAogLSAodm9pZClzZXRBbGxv
d3NKYXZhU2NyaXB0TWFya3VwOihCT09MKWFsbG93c0phdmFTY3JpcHRNYXJrdXAKIHsKLSAgICBX
S1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdE1hcmt1cEVuYWJsZWQoV0tQYWdlR3JvdXBHZXRQcmVm
ZXJlbmNlcyhzZWxmLl9wYWdlR3JvdXBSZWYpLCBhbGxvd3NKYXZhU2NyaXB0TWFya3VwKTsKKyAg
ICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdE1hcmt1cEVuYWJsZWQoV0tQYWdlR3JvdXBHZXRQ
cmVmZXJlbmNlcyhfcGFnZUdyb3VwUmVmLmdldCgpKSwgYWxsb3dzSmF2YVNjcmlwdE1hcmt1cCk7
CiB9CiAKIC0gKEJPT0wpYWxsb3dzUGx1Z0lucwogewotICAgIHJldHVybiBXS1ByZWZlcmVuY2Vz
R2V0UGx1Z2luc0VuYWJsZWQoV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhzZWxmLl9wYWdlR3Jv
dXBSZWYpKTsKKyAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFBsdWdpbnNFbmFibGVkKFdLUGFn
ZUdyb3VwR2V0UHJlZmVyZW5jZXMoX3BhZ2VHcm91cFJlZi5nZXQoKSkpOwogfQogCiAtICh2b2lk
KXNldEFsbG93c1BsdWdJbnM6KEJPT0wpYWxsb3dzUGx1Z0lucwogewotICAgIFdLUHJlZmVyZW5j
ZXNTZXRQbHVnaW5zRW5hYmxlZChXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHNlbGYuX3BhZ2VH
cm91cFJlZiksIGFsbG93c1BsdWdJbnMpOworICAgIFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5zRW5h
YmxlZChXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKF9wYWdlR3JvdXBSZWYuZ2V0KCkpLCBhbGxv
d3NQbHVnSW5zKTsKIH0KIAogc3RhdGljIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IGNyZWF0ZVdL
QXJyYXkoTlNBcnJheSAqYXJyYXkpCkBAIC0xMzYsMTIgKzEyMiwxMiBAQCAtKHZvaWQpYWRkVXNl
clN0eWxlU2hlZXQ6KE5TU3RyaW5nICopc291CiAgICAgYXV0byB3a0JsYWNrbGlzdCA9IGNyZWF0
ZVdLQXJyYXkoYmxhY2tsaXN0KTsKICAgICBXS1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5q
ZWN0ZWRGcmFtZXMgPSBtYWluRnJhbWVPbmx5ID8ga1dLSW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBr
V0tJbmplY3RJbkFsbEZyYW1lczsKIAotICAgIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxlU2hlZXQo
c2VsZi5fcGFnZUdyb3VwUmVmLCB3a1NvdXJjZS5nZXQoKSwgd2tCYXNlVVJMLmdldCgpLCB3a1do
aXRlbGlzdC5nZXQoKSwgd2tCbGFja2xpc3QuZ2V0KCksIGluamVjdGVkRnJhbWVzKTsKKyAgICBX
S1BhZ2VHcm91cEFkZFVzZXJTdHlsZVNoZWV0KF9wYWdlR3JvdXBSZWYuZ2V0KCksIHdrU291cmNl
LmdldCgpLCB3a0Jhc2VVUkwuZ2V0KCksIHdrV2hpdGVsaXN0LmdldCgpLCB3a0JsYWNrbGlzdC5n
ZXQoKSwgaW5qZWN0ZWRGcmFtZXMpOwogfQogCiAtICh2b2lkKXJlbW92ZUFsbFVzZXJTdHlsZVNo
ZWV0cwogewotICAgIFdLUGFnZUdyb3VwUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHNlbGYuX3Bh
Z2VHcm91cFJlZik7CisgICAgV0tQYWdlR3JvdXBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoX3Bh
Z2VHcm91cFJlZi5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpYWRkVXNlclNjcmlwdDooTlNTdHJpbmcg
Kilzb3VyY2UgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6
KE5TQXJyYXkgKil3aGl0ZWxpc3QgYmxhY2tsaXN0ZWRVUkxQYXR0ZXJuczooTlNBcnJheSAqKWJs
YWNrbGlzdCBpbmplY3Rpb25UaW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlv
blRpbWUgbWFpbkZyYW1lT25seTooQk9PTCltYWluRnJhbWVPbmx5CkBAIC0xNTUsMTIgKzE0MSwx
MiBAQCAtICh2b2lkKWFkZFVzZXJTY3JpcHQ6KE5TU3RyaW5nICopc291cmNlCiAgICAgYXV0byB3
a0JsYWNrbGlzdCA9IGNyZWF0ZVdLQXJyYXkoYmxhY2tsaXN0KTsKICAgICBXS1VzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMgPSBtYWluRnJhbWVPbmx5ID8ga1dLSW5qZWN0
SW5Ub3BGcmFtZU9ubHkgOiBrV0tJbmplY3RJbkFsbEZyYW1lczsKIAotICAgIFdLUGFnZUdyb3Vw
QWRkVXNlclNjcmlwdChzZWxmLl9wYWdlR3JvdXBSZWYsIHdrU291cmNlLmdldCgpLCB3a0Jhc2VV
UkwuZ2V0KCksIHdrV2hpdGVsaXN0LmdldCgpLCB3a0JsYWNrbGlzdC5nZXQoKSwgaW5qZWN0ZWRG
cmFtZXMsIGluamVjdGlvblRpbWUpOworICAgIFdLUGFnZUdyb3VwQWRkVXNlclNjcmlwdChfcGFn
ZUdyb3VwUmVmLmdldCgpLCB3a1NvdXJjZS5nZXQoKSwgd2tCYXNlVVJMLmdldCgpLCB3a1doaXRl
bGlzdC5nZXQoKSwgd2tCbGFja2xpc3QuZ2V0KCksIGluamVjdGVkRnJhbWVzLCBpbmplY3Rpb25U
aW1lKTsKIH0KIAogLSAodm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0cwogewotICAgIFdLUGFnZUdy
b3VwUmVtb3ZlQWxsVXNlclNjcmlwdHMoc2VsZi5fcGFnZUdyb3VwUmVmKTsKKyAgICBXS1BhZ2VH
cm91cFJlbW92ZUFsbFVzZXJTY3JpcHRzKF9wYWdlR3JvdXBSZWYuZ2V0KCkpOwogfQogCiBAZW5k
CkBAIC0xNjksNyArMTU1LDcgQEAgLSAodm9pZClyZW1vdmVBbGxVc2VyU2NyaXB0cwogCiAtIChX
S1BhZ2VHcm91cFJlZilfcGFnZUdyb3VwUmVmCiB7Ci0gICAgcmV0dXJuIF9kYXRhLT5fcGFnZUdy
b3VwUmVmLmdldCgpOworICAgIHJldHVybiBfcGFnZUdyb3VwUmVmLmdldCgpOwogfQogCiBAZW5k
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Nvbm5lY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Nvbm5lY3Rp
b24uaAkocmV2aXNpb24gMTU5NzYxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCiBAY2xhc3MgV0tDb25uZWN0aW9uOwotQGNs
YXNzIFdLQ29ubmVjdGlvbkRhdGE7CiBAY2xhc3MgV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIAog
QHByb3RvY29sIFdLQ29ubmVjdGlvbkRlbGVnYXRlIDxOU09iamVjdD4KQEAgLTQxLDE0ICs0MCwx
MSBAQAogQGVuZAogCiBXS19BUElfQ0xBU1MKLUBpbnRlcmZhY2UgV0tDb25uZWN0aW9uIDogTlNP
YmplY3QgewotQHByaXZhdGUKLSAgICBXS0Nvbm5lY3Rpb25EYXRhICpfZGF0YTsKLX0KK0BpbnRl
cmZhY2UgV0tDb25uZWN0aW9uIDogTlNPYmplY3QKIAogLSAodm9pZClzZW5kTWVzc2FnZVdpdGhO
YW1lOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIGJvZHk6KGlkKW1lc3NhZ2VCb2R5OwogCi1AcHJv
cGVydHkoYXNzaWduKSBpZCA8V0tDb25uZWN0aW9uRGVsZWdhdGU+IGRlbGVnYXRlOworQHByb3Bl
cnR5IChhc3NpZ24pIGlkIDxXS0Nvbm5lY3Rpb25EZWxlZ2F0ZT4gZGVsZWdhdGU7CiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqcmVtb3Rl
T2JqZWN0UmVnaXN0cnk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLQ29ubmVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS0Nvbm5lY3Rpb24ubW0JKHJldmlzaW9uIDE1OTc2MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQ29ubmVjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIsMzUgKzMyLDIzIEBACiAjaW1wb3J0ICJXS0Nvbm5lY3Rpb25SZWYuaCIKICNpbXBvcnQgIldL
RGF0YS5oIgogI2ltcG9ydCAiV0tSZXRhaW5QdHIuaCIKLSNpbXBvcnQgIldLU3RyaW5nLmgiCiAj
aW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0ICJXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50
ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAotQGludGVyZmFjZSBXS0Nvbm5lY3Rpb25EYXRhIDogTlNPYmplY3QgewotQHB1Ymxp
YworQGltcGxlbWVudGF0aW9uIFdLQ29ubmVjdGlvbiB7CiAgICAgLy8gVW5kZXJseWluZyBjb25u
ZWN0aW9uIG9iamVjdC4KICAgICBXS1JldGFpblB0cjxXS0Nvbm5lY3Rpb25SZWY+IF9jb25uZWN0
aW9uUmVmOwogCi0gICAgLy8gRGVsZWdhdGUgZm9yIGNhbGxiYWNrcy4KLSAgICBpZDxXS0Nvbm5l
Y3Rpb25EZWxlZ2F0ZT4gX2RlbGVnYXRlOwotCiAgICAgUmV0YWluUHRyPFdLUmVtb3RlT2JqZWN0
UmVnaXN0cnk+IF9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIFdLQ29ubmVjdGlvbkRhdGEKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLQ29ubmVjdGlv
bgogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBXS0Nvbm5lY3Rpb25TZXRDb25uZWN0aW9uQ2xp
ZW50KF9kYXRhLT5fY29ubmVjdGlvblJlZi5nZXQoKSwgMCk7CisgICAgV0tDb25uZWN0aW9uU2V0
Q29ubmVjdGlvbkNsaWVudChfY29ubmVjdGlvblJlZi5nZXQoKSwgMCk7CiAKLSAgICBbX2RhdGEg
cmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC02OSwyNSArNTcsMTUgQEAg
LSAodm9pZClzZW5kTWVzc2FnZVdpdGhOYW1lOihOU1N0cmluZyAqKQogICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiB3a01lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoQ0ZTdHJpbmdSZWYpbWVzc2FnZU5hbWUpKTsKICAgICBSZWZQdHI8T2JqQ09iamVj
dEdyYXBoPiB3a01lc3NhZ2VCb2R5ID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUobWVzc2FnZUJv
ZHkpOwogCi0gICAgV0tDb25uZWN0aW9uUG9zdE1lc3NhZ2UoX2RhdGEtPl9jb25uZWN0aW9uUmVm
LmdldCgpLCB3a01lc3NhZ2VOYW1lLmdldCgpLCAoV0tUeXBlUmVmKXdrTWVzc2FnZUJvZHkuZ2V0
KCkpOwotfQotCi0tIChpZCA8V0tDb25uZWN0aW9uRGVsZWdhdGU+KWRlbGVnYXRlCi17Ci0gICAg
cmV0dXJuIF9kYXRhLT5fZGVsZWdhdGU7Ci19Ci0KLS0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxX
S0Nvbm5lY3Rpb25EZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICBfZGF0YS0+X2RlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgV0tDb25uZWN0aW9uUG9zdE1lc3NhZ2UoX2Nvbm5lY3Rpb25SZWYuZ2V0
KCksIHdrTWVzc2FnZU5hbWUuZ2V0KCksIChXS1R5cGVSZWYpd2tNZXNzYWdlQm9keS5nZXQoKSk7
CiB9CiAKIC0gKFdLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKilyZW1vdGVPYmplY3RSZWdpc3RyeQog
ewotICAgIGlmICghX2RhdGEtPl9yZW1vdGVPYmplY3RSZWdpc3RyeSkKLSAgICAgICAgX2RhdGEt
Pl9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
IGFsbG9jXSBfaW5pdFdpdGhDb25uZWN0aW9uUmVmOl9kYXRhLT5fY29ubmVjdGlvblJlZi5nZXQo
KV0pOworICAgIGlmICghX3JlbW90ZU9iamVjdFJlZ2lzdHJ5KQorICAgICAgICBfcmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBhbGxvY10gX2lu
aXRXaXRoQ29ubmVjdGlvblJlZjpfY29ubmVjdGlvblJlZi5nZXQoKV0pOwogCi0gICAgcmV0dXJu
IF9kYXRhLT5fcmVtb3RlT2JqZWN0UmVnaXN0cnkuZ2V0KCk7CisgICAgcmV0dXJuIF9yZW1vdGVP
YmplY3RSZWdpc3RyeS5nZXQoKTsKIH0KIAogQGVuZApAQCAtOTgsNyArNzYsNyBAQCBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXS0Nvbm5lY3RpCiB7CiAgICAgV0tDb25uZWN0aW9uICpj
b25uZWN0aW9uID0gKFdLQ29ubmVjdGlvbiAqKWNsaWVudEluZm87CiAKLSAgICBpZiAoW2Nvbm5l
Y3Rpb24tPl9kYXRhLT5fcmVtb3RlT2JqZWN0UmVnaXN0cnkgX2hhbmRsZU1lc3NhZ2VXaXRoTmFt
ZTptZXNzYWdlTmFtZSBib2R5Om1lc3NhZ2VCb2R5XSkKKyAgICBpZiAoW2Nvbm5lY3Rpb24tPl9y
ZW1vdGVPYmplY3RSZWdpc3RyeSBfaGFuZGxlTWVzc2FnZVdpdGhOYW1lOm1lc3NhZ2VOYW1lIGJv
ZHk6bWVzc2FnZUJvZHldKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW2Nvbm5lY3Rpb24u
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb25uZWN0aW9uOmRpZFJlY2Vp
dmVNZXNzYWdlV2l0aE5hbWU6Ym9keTopXSkgewpAQCAtMTM2LDEwICsxMTQsOSBAQCAtIChpZClf
aW5pdFdpdGhDb25uZWN0aW9uUmVmOihXS0Nvbm5lY3RpCiAgICAgaWYgKCFzZWxmKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgX2RhdGEgPSBbW1dLQ29ubmVjdGlvbkRhdGEgYWxsb2NdIGlu
aXRdOwotICAgIF9kYXRhLT5fY29ubmVjdGlvblJlZiA9IGNvbm5lY3Rpb25SZWY7CisgICAgX2Nv
bm5lY3Rpb25SZWYgPSBjb25uZWN0aW9uUmVmOwogCi0gICAgc2V0VXBDbGllbnQoc2VsZiwgX2Rh
dGEtPl9jb25uZWN0aW9uUmVmLmdldCgpKTsKKyAgICBzZXRVcENsaWVudChzZWxmLCBfY29ubmVj
dGlvblJlZi5nZXQoKSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJvY2Vzc0dyb3VwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcm9jZXNzR3JvdXAuaAkocmV2aXNpb24g
MTU5NzYxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcm9jZXNzR3Jv
dXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOSBAQAogI2lmIFdLX0FQSV9FTkFCTEVE
CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0Mi9X
S0Nvbm5lY3Rpb24uaD4KIAotQGNsYXNzIFdLUHJvY2Vzc0dyb3VwLCBXS1Byb2Nlc3NHcm91cERh
dGEsIFdLQ29ubmVjdGlvbjsKK0BjbGFzcyBXS1Byb2Nlc3NHcm91cDsKIAogQHByb3RvY29sIFdL
UHJvY2Vzc0dyb3VwRGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlvbmFsCkBAIC00MywxNyArNDQs
MTQgQEAKIEBlbmQKIAogV0tfQVBJX0NMQVNTCi1AaW50ZXJmYWNlIFdLUHJvY2Vzc0dyb3VwIDog
TlNPYmplY3QgewotQHByaXZhdGUKLSAgICBXS1Byb2Nlc3NHcm91cERhdGEgKl9kYXRhOwotfQor
QGludGVyZmFjZSBXS1Byb2Nlc3NHcm91cCA6IE5TT2JqZWN0CiAKIC0gKGlkKWluaXRXaXRoSW5q
ZWN0ZWRCdW5kbGVVUkw6KE5TVVJMICopYnVuZGxlVVJMOwogCiAKICNwcmFnbWEgbWFyayBEZWxl
Z2F0ZXMKIAotQHByb3BlcnR5KGFzc2lnbikgaWQ8V0tQcm9jZXNzR3JvdXBEZWxlZ2F0ZT4gZGVs
ZWdhdGU7CitAcHJvcGVydHkgKGFzc2lnbikgaWQgPFdLUHJvY2Vzc0dyb3VwRGVsZWdhdGU+IGRl
bGVnYXRlOwogCiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLUHJvY2Vzc0dyb3VwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLUHJvY2Vzc0dyb3VwLm1tCShyZXZpc2lvbiAxNTk3NjEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Byb2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTEsMjQgKzUxLDE0IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLUBpbnRl
cmZhY2UgV0tQcm9jZXNzR3JvdXBEYXRhIDogTlNPYmplY3QgewotQHB1YmxpYworQGltcGxlbWVu
dGF0aW9uIFdLUHJvY2Vzc0dyb3VwIHsKICAgICAvLyBVbmRlcmx5aW5nIGNvbnRleHQgb2JqZWN0
LgogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gX2NvbnRleHRSZWY7CiAKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgUmV0YWluUHRyPFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUz4gX2dlb2xv
Y2F0aW9uUHJvdmlkZXI7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQotCi0gICAgLy8gRGVsZWdh
dGUgZm9yIGNhbGxiYWNrcy4KLSAgICBpZDxXS1Byb2Nlc3NHcm91cERlbGVnYXRlPiBfZGVsZWdh
dGU7CiB9Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1Byb2Nlc3NHcm91cERhdGEKLUBlbmQK
LQotQGltcGxlbWVudGF0aW9uIFdLUHJvY2Vzc0dyb3VwCiAKIHN0YXRpYyB2b2lkIGRpZENyZWF0
ZUNvbm5lY3Rpb24oV0tDb250ZXh0UmVmLCBXS0Nvbm5lY3Rpb25SZWYgY29ubmVjdGlvblJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKQEAgLTE4MSw2MCArMTcxLDQ3IEBAIC0gKGlkKWlu
aXRXaXRoSW5qZWN0ZWRCdW5kbGVVUkw6KE5TVVJMICoKICAgICBpZiAoIXNlbGYpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBfZGF0YSA9IFtbV0tQcm9jZXNzR3JvdXBEYXRhIGFsbG9jXSBp
bml0XTsKLSAgICAKICNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IFJlbW92ZSBvbmNl
IDxyZGFyOi8vcHJvYmxlbS8xNTI1NjU3Mj4gIGlzIGZpeGVkLgorICAgIC8vIEZJWE1FOiBSZW1v
dmUgb25jZSA8cmRhcjovL3Byb2JsZW0vMTUyNTY1NzI+IGlzIGZpeGVkLgogICAgIEluaXRXZWJD
b3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYKIAogICAgIGlmIChidW5kbGVVUkwp
Ci0gICAgICAgIF9kYXRhLT5fY29udGV4dFJlZiA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0
aEluamVjdGVkQnVuZGxlUGF0aChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChD
RlN0cmluZ1JlZilbYnVuZGxlVVJMIHBhdGhdKSkuZ2V0KCkpKTsKKyAgICAgICAgX2NvbnRleHRS
ZWYgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW2J1bmRsZVVSTCBwYXRo
XSkpLmdldCgpKSk7CiAgICAgZWxzZQotICAgICAgICBfZGF0YS0+X2NvbnRleHRSZWYgPSBhZG9w
dFdLKFdLQ29udGV4dENyZWF0ZSgpKTsKKyAgICAgICAgX2NvbnRleHRSZWYgPSBhZG9wdFdLKFdL
Q29udGV4dENyZWF0ZSgpKTsKIAotICAgIHNldFVwQ29ubmVjdGlvbkNsaWVudChzZWxmLCBfZGF0
YS0+X2NvbnRleHRSZWYuZ2V0KCkpOwotICAgIHNldFVwSW5lY3RlZEJ1bmRsZUNsaWVudChzZWxm
LCBfZGF0YS0+X2NvbnRleHRSZWYuZ2V0KCkpOwotICAgIHNldFVwSGlzdG9yeUNsaWVudChzZWxm
LCBfZGF0YS0+X2NvbnRleHRSZWYuZ2V0KCkpOworICAgIHNldFVwQ29ubmVjdGlvbkNsaWVudChz
ZWxmLCBfY29udGV4dFJlZi5nZXQoKSk7CisgICAgc2V0VXBJbmVjdGVkQnVuZGxlQ2xpZW50KHNl
bGYsIF9jb250ZXh0UmVmLmdldCgpKTsKKyAgICBzZXRVcEhpc3RvcnlDbGllbnQoc2VsZiwgX2Nv
bnRleHRSZWYuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpZGVhbGxv
YwogewotICAgIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoX2RhdGEtPl9jb250ZXh0UmVm
LmdldCgpLCAwKTsKLSAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChfZGF0YS0+
X2NvbnRleHRSZWYuZ2V0KCksIDApOwotICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoX2Rh
dGEtPl9jb250ZXh0UmVmLmdldCgpLCAwKTsKKyAgICBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xp
ZW50KF9jb250ZXh0UmVmLmdldCgpLCAwKTsKKyAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChfY29udGV4dFJlZi5nZXQoKSwgMCk7CisgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNs
aWVudChfY29udGV4dFJlZi5nZXQoKSwgMCk7CiAKLSAgICBbX2RhdGEgcmVsZWFzZV07CiAgICAg
W3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpZDxXS1Byb2Nlc3NHcm91cERlbGVnYXRlPilkZWxl
Z2F0ZQotewotICAgIHJldHVybiBfZGF0YS0+X2RlbGVnYXRlOwotfQotCi0tICh2b2lkKXNldERl
bGVnYXRlOihpZDxXS1Byb2Nlc3NHcm91cERlbGVnYXRlPilkZWxlZ2F0ZQotewotICAgIF9kYXRh
LT5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLX0KLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tQ
cm9jZXNzR3JvdXAgKFByaXZhdGUpCiAKIC0gKFdLQ29udGV4dFJlZilfY29udGV4dFJlZgogewot
ICAgIHJldHVybiBfZGF0YS0+X2NvbnRleHRSZWYuZ2V0KCk7CisgICAgcmV0dXJuIF9jb250ZXh0
UmVmLmdldCgpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQogLSAoV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TICopX2dlb2xvY2F0aW9uUHJvdmlkZXIKIHsKLSAgICBpZiAoIV9kYXRhLT5fZ2VvbG9j
YXRpb25Qcm92aWRlcikKLSAgICAgICAgX2RhdGEtPl9nZW9sb2NhdGlvblByb3ZpZGVyID0gYWRv
cHROUyhbW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBhbGxvY10gaW5pdFdpdGhDb250ZXh0OnRv
SW1wbChfZGF0YS0+X2NvbnRleHRSZWYuZ2V0KCkpXSk7Ci0gICAgcmV0dXJuIF9kYXRhLT5fZ2Vv
bG9jYXRpb25Qcm92aWRlci5nZXQoKTsKKyAgICBpZiAoIV9nZW9sb2NhdGlvblByb3ZpZGVyKQor
ICAgICAgICBfZ2VvbG9jYXRpb25Qcm92aWRlciA9IGFkb3B0TlMoW1tXS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MgYWxsb2NdIGluaXRXaXRoQ29udGV4dDp0b0ltcGwoX2NvbnRleHRSZWYuZ2V0KCkp
XSk7CisgICAgcmV0dXJuIF9nZW9sb2NhdGlvblByb3ZpZGVyLmdldCgpOwogfQogI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>