<?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>93914</bug_id>
          
          <creation_ts>2012-08-13 17:30:29 -0700</creation_ts>
          <short_desc>IndexedDB: add tracing to IDBLevelDBBackingStore</short_desc>
          <delta_ts>2012-08-14 18:18:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694264</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-08-13 17:30:29 -0700</bug_when>
    <thetext>IndexedDB: add tracing to IDBLevelDBBackingStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694267</commentid>
    <comment_count>1</comment_count>
      <attachid>158158</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-08-13 17:31:43 -0700</bug_when>
    <thetext>Created attachment 158158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695203</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-08-14 11:40:22 -0700</bug_when>
    <thetext>pretty straight forward - also I moved the static findKeyInIndex into IDBLevelDBBackingStore because I want to mess with its const-ness for bug 91127, and since I was adding a IDB_TRACE...

jsbell@ / dgrogan@ - any objections?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695215</commentid>
    <comment_count>3</comment_count>
      <attachid>158158</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-14 11:54:04 -0700</bug_when>
    <thetext>Comment on attachment 158158
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=158158&amp;action=review

LGTM (Could quibble about including the refactoring here vs. in 91127, but it&apos;s harmless.)

&gt; Source/WebCore/ChangeLog:10
&gt; +        from core IDB slowness.

Add note about moving findKeyInIndex

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.h:88
&gt; +

Nit: Remove this blank line.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.h:89
&gt; +    bool findKeyInIndex(int64_t databaseId, int64_t objectStoreId, int64_t indexId, const IDBKey&amp;, Vector&lt;char&gt;&amp; foundEncodedPrimaryKey);

Need to expose this in IDBBackingStore too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695312</commentid>
    <comment_count>4</comment_count>
      <attachid>158158</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-08-14 13:14:32 -0700</bug_when>
    <thetext>Comment on attachment 158158
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=158158&amp;action=review

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.h:89
&gt;&gt; +    bool findKeyInIndex(int64_t databaseId, int64_t objectStoreId, int64_t indexId, const IDBKey&amp;, Vector&lt;char&gt;&amp; foundEncodedPrimaryKey);
&gt; 
&gt; Need to expose this in IDBBackingStore too?

Nope, only used by members of this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695313</commentid>
    <comment_count>5</comment_count>
      <attachid>158401</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-08-14 13:14:43 -0700</bug_when>
    <thetext>Created attachment 158401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695315</commentid>
    <comment_count>6</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-08-14 13:15:19 -0700</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695578</commentid>
    <comment_count>7</comment_count>
      <attachid>158401</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-14 17:26:24 -0700</bug_when>
    <thetext>Comment on attachment 158401
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=158401&amp;action=review

&gt; Source/WebCore/ChangeLog:15
&gt; +        No new tests (OOPS!).

You need to update this line for why there are no tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695582</commentid>
    <comment_count>8</comment_count>
      <attachid>158455</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-08-14 17:33:14 -0700</bug_when>
    <thetext>Created attachment 158455
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695624</commentid>
    <comment_count>9</comment_count>
      <attachid>158455</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 18:18:40 -0700</bug_when>
    <thetext>Comment on attachment 158455
Patch for landing

Clearing flags on attachment: 158455

Committed r125627: &lt;http://trac.webkit.org/changeset/125627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695625</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 18:18:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158158</attachid>
            <date>2012-08-13 17:31:43 -0700</date>
            <delta_ts>2012-08-14 13:14:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93914-20120813173111.patch</filename>
            <type>text/plain</type>
            <size>17030</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVjMGUzMjM1MGZiN2E3
M2ExMWU3MmQyYTM5ODM3NzQ5ZmVkOWY4YS4uZTAwZTE4YmZhMjU3Y2I0OTMwZDRjYmFiN2Q4NjMx
ZTk1Y2Y0ZGZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA4LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGFk
ZCB0cmFjaW5nIHRvIElEQkxldmVsREJCYWNraW5nU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgYnVuY2ggb2YgdHJhY2UgZXZlbnRzIHRv
IHRoZSBsb3dlciBsZXZlbAorICAgICAgICBkYXRhYmFzZSBsYXllciwgdG8gc2VwYXJhdGUgZGF0
YWJhc2Ugc2xvd25lc3MKKyAgICAgICAgZnJvbSBjb3JlIElEQiBzbG93bmVzcy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpnZXRPYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRP
YmplY3RTdG9yZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0UHJpbWFyeUtl
eVZpYUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Omtl
eUV4aXN0c0luSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJC
YWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6cm9sbGJhY2spOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoKKyAg
ICAgICAgKElEQkxldmVsREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246Om9uQ29tcGxldGUpOgorCiAyMDEyLTA4LTEzICBLd2FuZyBZdWwgU2VvICA8
c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1F0XSBBZGQgZ3Byb2YucHJmIHRvIGJ1
aWxkIFdlYktpdCB3aXRoIGdwcm9mIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
YTgwOWJjOTJhMzZiOTJhMDQ3NWVhYzJlODZmZTNlYmE4ZjU2MjY1Zi4uMDRhNGZiYmEyNTAzMDdh
ZWM0NWJmYTc5Mzk0NTJhNmVlYzVkYTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklEQkxldmVsREJC
YWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKICNpZiBVU0UoTEVWRUxEQikKQEAgLTIwMCw2ICsyMDEsNyBAQCBJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjp+SURCTGV2ZWxEQkJhY2tpbmdTdG9yZSgpCiAKIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZUFyZywgY29uc3Qg
U3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5KQog
eworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbiIpOwogICAgIFN0
cmluZyBwYXRoQmFzZSA9IHBhdGhCYXNlQXJnOwogCiAgICAgT3duUHRyPExldmVsREJDb21wYXJh
dG9yPiBjb21wYXJhdG9yID0gYWRvcHRQdHIobmV3IENvbXBhcmF0b3IoKSk7CkBAIC0zNTcsNiAr
MzU5LDcgQEAgc3RhdGljIGJvb2wgZGVsZXRlUmFuZ2UoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBiZWcKIAogYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CisgICAgSURCX1RS
QUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZSIpOwogICAgIFJlZlB0
cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpj
cmVhdGUobV9kYi5nZXQoKSk7CiAKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7CkBAIC0zOTcsNiAr
NDAwLDcgQEAgc3RhdGljIGJvb2wgY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShjb25z
dCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25zdCBWZWMKIAogdm9pZCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRf
dD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBh
dGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdz
KQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3Rv
cmVzIik7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIDEsIDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBzdG9wS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNl
SWQpOwogCkBAIC01MDgsNiArNTEyLDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3T2JqZWN0U3Rv
cmVJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGEKIAogYm9v
bCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFi
YXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpCiB7CisgICAg
SURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSIpOwog
ICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW50NjRfdCBvYmplY3RTdG9y
ZUlkID0gZ2V0TmV3T2JqZWN0U3RvcmVJZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgZGF0
YWJhc2VJZCk7CiAgICAgaWYgKG9iamVjdFN0b3JlSWQgPCAwKQpAQCAtNTg0LDYgKzU4OSw3IEBA
IGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBk
YXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmCiAKIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVPYmpl
Y3RTdG9yZSIpOwogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKICAgICBTdHJp
bmcgb2JqZWN0U3RvcmVOYW1lOwpAQCAtNjA0LDYgKzYxMCw3IEBAIHZvaWQgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjCiAKIFN0cmluZyBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZVJl
Y29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
S2V5JiBrZXkpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRP
YmplY3RTdG9yZVJlY29yZCIpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBsZXZlbGRiS2V5ID0g
T2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5
KTsKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKIApAQCAtNjYyLDYgKzY2OSw3IEBAIHN0YXRpYyBp
bnQ2NF90IGdldE5ld1ZlcnNpb25OdW1iZXIoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhCiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0T2JqZWN0
U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleSYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBPYmplY3RTdG9yZVJlY29yZElk
ZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpwdXRPYmplY3RTdG9yZVJlY29yZCIpOwogICAgIEFTU0VSVChrZXkuaXNW
YWxpZCgpKTsKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGludDY0X3Qg
dmVyc2lvbiA9IGdldE5ld1ZlcnNpb25OdW1iZXIobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCks
IGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwpAQCAtNjg2LDYgKzY5NCw3IEBAIGJvb2wgSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0T2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iCiAKIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmpl
Y3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKKyAg
ICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUiKTsK
ICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBzdGFydEtleSA9IEtleVByZWZpeChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwKS5lbmNv
ZGUoKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IEtleVByZWZpeChkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkICsgMSwgMCkuZW5jb2RlKCk7CkBAIC03MDAsNiArNzA5LDcgQEAg
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4g
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZToKIAogdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpk
ZWxldGVPYmplY3RTdG9yZVJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlm
aWVyKQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2Jq
ZWN0U3RvcmVSZWNvcmQiKTsKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAg
IGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKiBsZXZlbERCUmVjb3JkSWRlbnRpZmllciA9
IHN0YXRpY19jYXN0PGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKj4ocmVjb3JkSWRlbnRp
Zmllcik7CiAKQEAgLTc3NCw2ICs3ODQsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6
Om1heWJlVXBkYXRlS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcihpbnQ2NF90IGRhdGFiYQogCiBi
b29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5LCBP
YmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqIGZvdW5kUmVjb3JkSWRlbnRpZmllcikKIHsKKyAg
ICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3Rv
cmUiKTsKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBsZXZlbGRiS2V5ID0gT2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwga2V5KTsKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKQEAgLTg0MCw2
ICs4NTEsNyBAQCBzdGF0aWMgYm9vbCBjaGVja0luZGV4QW5kTWV0YURhdGFLZXkoY29uc3QgTGV2
ZWxEQkl0ZXJhdG9yKiBpdCwgY29uc3QgVmVjdG9yPGNoYQogCiB2b2lkIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5h
bWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91
bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncykKIHsKKyAg
ICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMiKTsKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCwgMCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0
b3BLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCArIDEsIDAsIDApOwogCkBAIC05MTYsNiArOTI4LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3
SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQKIAogYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwg
aW50NjRfdCYgaW5kZXhJZCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZUluZGV4Iik7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAg
ICBpbmRleElkID0gZ2V0TmV3SW5kZXhJZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCk7CiAgICAgaWYgKGluZGV4SWQgPCAwKQpAQCAtOTU1LDYg
Kzk2OCw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiAKIHZvaWQgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZUluZGV4Iik7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9u
KTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBpbmRleE1ldGFEYXRhU3RhcnQgPSBJbmRleE1l
dGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgMCk7
CkBAIC05NzYsNiArOTkwLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVJ
bmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmUKIAogYm9vbCBJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5
JiBrZXksIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmll
cikKIHsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0
YUZvclJlY29yZCIpOwogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpKTsKICAgICBBU1NFUlQoaW5k
ZXhJZCA+PSBNaW5pbXVtSW5kZXhJZCk7CiAgICAgY29uc3QgTGV2ZWxEQlJlY29yZElkZW50aWZp
ZXIqIGxldmVsREJSZWNvcmRJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgTGV2ZWxEQlJl
Y29yZElkZW50aWZpZXIqPihyZWNvcmRJZGVudGlmaWVyKTsKQEAgLTEwMzUsMTIgKzEwNTAsMTMg
QEAgc3RhdGljIGJvb2wgdmVyc2lvbkV4aXN0cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGkKICAgICByZXR1cm4gZGVjb2RlSW50KGRhdGEuYmVn
aW4oKSwgZGF0YS5lbmQoKSkgPT0gdmVyc2lvbjsKIH0KIAotc3RhdGljIGJvb2wgZmluZEtleUlu
SW5kZXgoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBr
ZXksIFZlY3RvcjxjaGFyPiYgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkKK2Jvb2wgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIFZlY3Rv
cjxjaGFyPiYgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkKIHsKKyAgICBJREJfVFJBQ0UoIklEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmZpbmRLZXlJbkluZGV4Iik7CiAgICAgQVNTRVJUKGZvdW5kRW5j
b2RlZFByaW1hcnlLZXkuaXNFbXB0eSgpKTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBsZXZl
bGRiS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwga2V5KTsKLSAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IHRyYW5zYWN0
aW9uLT5jcmVhdGVJdGVyYXRvcigpOworICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0g
bV9jdXJyZW50VHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgaXQtPnNlZWsobGV2
ZWxkYktleSk7CiAKICAgICBmb3IgKDs7KSB7CkBAIC0xMDU1LDkgKzEwNzEsOSBAQCBzdGF0aWMg
Ym9vbCBmaW5kS2V5SW5JbmRleChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2
NF90IGRhdGFiYXNlSWQsCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvdW5k
RW5jb2RlZFByaW1hcnlLZXkuYXBwZW5kKHAsIGl0LT52YWx1ZSgpLmVuZCgpIC0gcCk7CiAKLSAg
ICAgICAgaWYgKCF2ZXJzaW9uRXhpc3RzKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCB2ZXJzaW9uLCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5KSkgeworICAgICAgICBpZiAo
IXZlcnNpb25FeGlzdHMobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIHZlcnNpb24sIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkpKSB7CiAgICAgICAg
ICAgICAvLyBEZWxldGUgc3RhbGUgaW5kZXggZGF0YSBlbnRyeSBhbmQgY29udGludWUuCi0gICAg
ICAgICAgICB0cmFuc2FjdGlvbi0+cmVtb3ZlKGl0LT5rZXkoKSk7CisgICAgICAgICAgICBtX2N1
cnJlbnRUcmFuc2FjdGlvbi0+cmVtb3ZlKGl0LT5rZXkoKSk7CiAgICAgICAgICAgICBpdC0+bmV4
dCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTEwNjgsMTAgKzEwODQs
MTEgQEAgc3RhdGljIGJvb2wgZmluZEtleUluSW5kZXgoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLAogCiBQYXNzUmVmUHRyPElEQktleT4gSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0UHJpbWFyeUtleVZpYUluZGV4KGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYg
a2V5KQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0UHJpbWFy
eUtleVZpYUluZGV4Iik7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKIAogICAg
IFZlY3RvcjxjaGFyPiBmb3VuZEVuY29kZWRQcmltYXJ5S2V5OwotICAgIGlmIChmaW5kS2V5SW5J
bmRleChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCwga2V5LCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5KSkgeworICAgIGlmIChmaW5k
S2V5SW5JbmRleChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXksIGZvdW5k
RW5jb2RlZFByaW1hcnlLZXkpKSB7CiAgICAgICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXk7
CiAgICAgICAgIGRlY29kZUlEQktleShmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmJlZ2luKCksIGZv
dW5kRW5jb2RlZFByaW1hcnlLZXkuZW5kKCksIHByaW1hcnlLZXkpOwogICAgICAgICByZXR1cm4g
cHJpbWFyeUtleS5yZWxlYXNlKCk7CkBAIC0xMDgyLDEwICsxMDk5LDExIEBAIFBhc3NSZWZQdHI8
SURCS2V5PiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRQcmltYXJ5S2V5VmlhSW5kZXgoaW50
NjRfdCBkYXRhYmFzCiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5J
bmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBjb25zdCBJREJLZXkmIGluZGV4S2V5LCBSZWZQdHI8SURCS2V5PiYgZm91bmRQcmlt
YXJ5S2V5KQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6a2V5RXhp
c3RzSW5JbmRleCIpOwogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKICAgICBW
ZWN0b3I8Y2hhcj4gZm91bmRFbmNvZGVkUHJpbWFyeUtleTsKLSAgICBpZiAoIWZpbmRLZXlJbklu
ZGV4KG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBpbmRleElkLCBpbmRleEtleSwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkpCisgICAgaWYgKCFm
aW5kS2V5SW5JbmRleChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBpbmRleEtl
eSwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGRlY29kZUlEQktleShmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmJlZ2luKCksIGZvdW5kRW5jb2Rl
ZFByaW1hcnlLZXkuZW5kKCksIGZvdW5kUHJpbWFyeUtleSk7CkBAIC0xNTE4LDYgKzE1MzYsNyBA
QCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogCiBQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0
U3RvcmVDdXJzb3IoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uKQog
eworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3Jl
Q3Vyc29yIik7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBDdXJzb3JP
cHRpb25zIGN1cnNvck9wdGlvbnM7CiAKQEAgLTE1NzIsNiArMTU5MSw3IEBAIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5PYmpl
Y3RTdG9yZUN1cnNvCiAKIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkxl
dmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcihpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKKyAgICBJREJfVFJB
Q0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvciIpOwogICAgIEFT
U0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgQ3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRp
b25zOwogICAgIGJvb2wgbG93ZXJCb3VuZCA9IHJhbmdlICYmIHJhbmdlLT5sb3dlcigpOwpAQCAt
MTYyMCw2ICsxNjQwLDcgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKGkKIAogUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4
Q3Vyc29yKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Bl
bkluZGV4Q3Vyc29yIik7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBD
dXJzb3JPcHRpb25zIGN1cnNvck9wdGlvbnM7CiAgICAgYm9vbCBsb3dlckJvdW5kID0gcmFuZ2Ug
JiYgcmFuZ2UtPmxvd2VyKCk7CkBAIC0xNjg5LDYgKzE3MTAsNyBAQCB2b2lkIElEQkxldmVsREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpiZWdpbigpCiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6Y29tbWl0Iik7CiAgICAgQVNTRVJUKG1fYmFj
a2luZ1N0b3JlLT5tX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgYm9vbCByZXN1bHQgPSBtX2Jh
Y2tpbmdTdG9yZS0+bV9jdXJyZW50VHJhbnNhY3Rpb24tPmNvbW1pdCgpOwogICAgIG1fYmFja2lu
Z1N0b3JlLT5tX2N1cnJlbnRUcmFuc2FjdGlvbi5jbGVhcigpOwpAQCAtMTY5Nyw2ICsxNzE5LDcg
QEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6Y29tbWl0KCkKIAog
dm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQogewor
ICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OnJvbGxi
YWNrIik7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlLT5tX2N1cnJlbnRUcmFuc2FjdGlvbik7
CiAgICAgbV9iYWNraW5nU3RvcmUtPm1fY3VycmVudFRyYW5zYWN0aW9uLT5yb2xsYmFjaygpOwog
ICAgIG1fYmFja2luZ1N0b3JlLT5tX2N1cnJlbnRUcmFuc2FjdGlvbi5jbGVhcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5oCmluZGV4IDQ3OWVmZWNjMDVhYmIxNjA4MzMxNTJiMjI4ZWNlNmVlNzc2NjM5ZWMu
LmFlZmI3ZGI2YTBhMjhmNmRhZjg5MGNmZjU1MDZhNzFkYjFlOTA5ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmgKQEAgLTg1LDYgKzg1LDkgQEAgcHJvdGVjdGVkOgogICAgIElEQkxldmVsREJCYWNraW5n
U3RvcmUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwqLCBQ
YXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4pOwogCiBwcml2YXRlOgorCisgICAgYm9vbCBmaW5k
S2V5SW5JbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2RlZFBy
aW1hcnlLZXkpOworCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBSZWZQdHI8SURCRmFj
dG9yeUJhY2tlbmRJbXBsPiBtX2ZhY3Rvcnk7CiAgICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4g
bV9kYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggY2UwOTE1YTMwNmYxYTczZjRi
YzlmNWUyOWNkNzBjYTZmM2E5ZjI3NS4uNzFmZjA3MWM0MDI2ZDZjNTE2NmI1OTIyYjc2ODc4MzU3
NDRkNTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBhZGRpbmdLZXlBbGxvd2VkKElEQkJhY2tpbmdTdG9yZSYg
YmFja2luZ1N0b3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJREJLZXkqIGluZGV4S2V5LCBjb25zdCBJREJLZXkqIHByaW1h
cnlLZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElEQktleSogaW5kZXhLZXks
IGNvbnN0IElEQktleSogcHJpbWFyeUtleSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9p
bmRleE1ldGFkYXRhLnVuaXF1ZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4
IDc2MTIzNDcwMTQxODNjOWRhNjFlOGRiYWZlNjVmYTM4NTk5OTM0N2UuLmEyMzNlN2EzMGU5NzAx
N2I3ZTA4MGMwNjA2NTQ2NTBiODU4YTUzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI2Miw2ICsyNjIsNyBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uOjp1bnJlZ2lzdGVyUmVxdWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0
KQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKIHsKKyAgICBJREJfVFJBQ0UoIklE
QlRyYW5zYWN0aW9uOjpvbkFib3J0Iik7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQp
OwogCiAgICAgaWYgKG1fc3RhdGUgIT0gRmluaXNoaW5nKSB7CkBAIC0yOTQsNiArMjk1LDcgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbjo6b25BYm9ydCgpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9u
Q29tcGxldGUoKQogeworICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUi
KTsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7CiAgICAgbV9zdGF0ZSA9IEZpbmlz
aGluZzsKICAgICBtX29iamVjdFN0b3JlQ2xlYW51cE1hcC5jbGVhcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158401</attachid>
            <date>2012-08-14 13:14:43 -0700</date>
            <delta_ts>2012-08-14 17:33:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93914-20120814131410.patch</filename>
            <type>text/plain</type>
            <size>17116</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA3ZmY3YmUyMjk2YTIw
ZDg2MTE3YWYzOWZhYzM3ZmE2MTIwMjdjMi4uYTViMjg0NTFhNzBjZGVmNzYwMTEzNTA5MDNkZTNl
YzhlMzdlMGFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA4LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGFk
ZCB0cmFjaW5nIHRvIElEQkxldmVsREJCYWNraW5nU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgYnVuY2ggb2YgdHJhY2UgZXZlbnRzIHRv
IHRoZSBsb3dlciBsZXZlbAorICAgICAgICBkYXRhYmFzZSBsYXllciwgdG8gc2VwYXJhdGUgZGF0
YWJhc2Ugc2xvd25lc3MKKyAgICAgICAgZnJvbSBjb3JlIElEQiBzbG93bmVzcy4KKworICAgICAg
ICBBbHNvIG1vdmluZyBmaW5kS2V5SW5JbmRleCBpbnRvIElEQkxldmVsREJCYWNraW5nU3RvcmUg
dG8KKyAgICAgICAgZXZlbnR1YWxseSBtYWtlIGl0IGNvbnN0LgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0
ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dE9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dE9iamVjdFN0b3Jl
UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNsZWFy
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
ZGVsZXRlT2JqZWN0U3RvcmVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpmaW5kS2V5SW5JbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRQcmltYXJ5S2V5VmlhSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5J
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuT2Jq
ZWN0U3RvcmVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6b3BlbkluZGV4S2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpyb2xsYmFjayk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6b25BYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6b25Db21wbGV0ZSk6CisKIDIwMTItMDgtMTQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjU1
MTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGE4MDliYzkyYTM2YjkyYTA0NzVlYWMyZTg2
ZmUzZWJhOGY1NjI2NWYuLjA0YTRmYmJhMjUwMzA3YWVjNDViZmE3OTM5NDUyYTZlZWM1ZGEzYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJREJMZXZlbERCQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAi
SURCVHJhY2luZy5oIgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAjaWYgVVNFKExF
VkVMREIpCkBAIC0yMDAsNiArMjAxLDcgQEAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6fklEQkxl
dmVsREJCYWNraW5nU3RvcmUoKQogCiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgcGF0aEJhc2VBcmcsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElE
QkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSkKIHsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVs
REJCYWNraW5nU3RvcmU6Om9wZW4iKTsKICAgICBTdHJpbmcgcGF0aEJhc2UgPSBwYXRoQmFzZUFy
ZzsKIAogICAgIE93blB0cjxMZXZlbERCQ29tcGFyYXRvcj4gY29tcGFyYXRvciA9IGFkb3B0UHRy
KG5ldyBDb21wYXJhdG9yKCkpOwpAQCAtMzU3LDYgKzM1OSw3IEBAIHN0YXRpYyBib29sIGRlbGV0
ZVJhbmdlKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFy
PiYgYmVnCiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBuYW1lKQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlRGF0YWJhc2UiKTsKICAgICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFu
c2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRlKG1fZGIuZ2V0KCkpOwogCiAgICAg
aW50NjRfdCBkYXRhYmFzZUlkOwpAQCAtMzk3LDYgKzQwMCw3IEBAIHN0YXRpYyBib29sIGNoZWNr
T2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoY29uc3QgTGV2ZWxEQkl0ZXJhdG9yKiBpdCwgY29u
c3QgVmVjCiAKIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmlu
Zz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9y
PGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncykKIHsKKyAgICBJREJfVFJBQ0UoIklEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyIpOwogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBzdGFydEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCAxLCAwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IE9iamVjdFN0b3JlTWV0
YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkKTsKIApAQCAtNTA4LDYgKzUxMiw3IEBA
IHN0YXRpYyBpbnQ2NF90IGdldE5ld09iamVjdFN0b3JlSWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhCiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYg
YXNzaWduZWRPYmplY3RTdG9yZUlkKQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNh
Y3Rpb24pOwogICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IGdldE5ld09iamVjdFN0b3JlSWQo
bV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQpOwogICAgIGlmIChvYmplY3RT
dG9yZUlkIDwgMCkKQEAgLTU4NCw2ICs1ODksNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJgog
CiB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogeworICAgIElEQl9UUkFDRSgiSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKICAgICBBU1NFUlQobV9j
dXJyZW50VHJhbnNhY3Rpb24pOwogCiAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZTsKQEAgLTYw
NCw2ICs2MTAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0
b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplYwogCiBTdHJpbmcgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5KQogeworICAgIElEQl9UUkFD
RSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVSZWNvcmQiKTsKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7
CiAKQEAgLTY2Miw2ICs2NjksNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdWZXJzaW9uTnVtYmVy
KExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YQogCiBib29sIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OnB1dE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVy
KQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0T2JqZWN0U3Rv
cmVSZWNvcmQiKTsKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKG1fY3Vy
cmVudFRyYW5zYWN0aW9uKTsKICAgICBpbnQ2NF90IHZlcnNpb24gPSBnZXROZXdWZXJzaW9uTnVt
YmVyKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
KTsKQEAgLTY4Niw2ICs2OTQsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dE9i
amVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYgogCiB2b2lkIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpjbGVhck9iamVjdFN0b3JlIik7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5z
YWN0aW9uKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBLZXlQcmVmaXgoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCkuZW5jb2RlKCk7CiAgICAgY29uc3QgVmVjdG9yPGNo
YXI+IHN0b3BLZXkgPSBLZXlQcmVmaXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCArIDEsIDAp
LmVuY29kZSgpOwpAQCAtNzAwLDYgKzcwOSw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3Jl
OjpPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IElEQkxldmVsREJCYWNraW5nU3RvcmU6CiAK
IHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmVSZWNvcmQoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IE9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKIHsKKyAgICBJREJfVFJBQ0UoIklE
QkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlUmVjb3JkIik7CiAgICAgQVNT
RVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBjb25zdCBMZXZlbERCUmVjb3JkSWRlbnRp
ZmllciogbGV2ZWxEQlJlY29yZElkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBMZXZlbERC
UmVjb3JkSWRlbnRpZmllcio+KHJlY29yZElkZW50aWZpZXIpOwogCkBAIC03NzQsNiArNzg0LDcg
QEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvckN1
cnJlbnROdW1iZXIoaW50NjRfdCBkYXRhYmEKIAogYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVy
KiBmb3VuZFJlY29yZElkZW50aWZpZXIpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlIik7CiAgICAgQVNTRVJUKG1fY3VycmVu
dFRyYW5zYWN0aW9uKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IE9iamVj
dFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7CiAg
ICAgVmVjdG9yPGNoYXI+IGRhdGE7CkBAIC04NDAsNiArODUxLDcgQEAgc3RhdGljIGJvb2wgY2hl
Y2tJbmRleEFuZE1ldGFEYXRhS2V5KGNvbnN0IExldmVsREJJdGVyYXRvciogaXQsIGNvbnN0IFZl
Y3RvcjxjaGEKIAogdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBm
b3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29s
PiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpnZXRJbmRleGVzIik7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5
ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDAs
IDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQgKyAxLCAwLCAwKTsKIApAQCAtOTE2LDYg
KzkyOCw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld0luZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkCiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpCiB7CisgICAg
SURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCIpOwogICAgIEFT
U0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW5kZXhJZCA9IGdldE5ld0luZGV4SWQo
bV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwog
ICAgIGlmIChpbmRleElkIDwgMCkKQEAgLTk1NSw2ICs5NjgsNyBAQCBib29sIElEQkxldmVsREJC
YWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZQogCiB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCiB7
CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleCIpOwog
ICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gaW5kZXhNZXRhRGF0YVN0YXJ0ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDApOwpAQCAtOTc2LDYgKzk5MCw3IEBAIHZvaWQg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlCiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0SW5k
ZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBPYmplY3RTdG9yZVJl
Y29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCiB7CisgICAgSURCX1RSQUNFKCJJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQiKTsKICAgICBBU1NFUlQo
a2V5LmlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKGluZGV4SWQgPj0gTWluaW11bUluZGV4SWQpOwog
ICAgIGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKiBsZXZlbERCUmVjb3JkSWRlbnRpZmll
ciA9IHN0YXRpY19jYXN0PGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKj4ocmVjb3JkSWRl
bnRpZmllcik7CkBAIC0xMDM1LDEyICsxMDUwLDEzIEBAIHN0YXRpYyBib29sIHZlcnNpb25FeGlz
dHMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
CiAgICAgcmV0dXJuIGRlY29kZUludChkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCkpID09IHZlcnNp
b247CiB9CiAKLXN0YXRpYyBib29sIGZpbmRLZXlJbkluZGV4KExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5j
b2RlZFByaW1hcnlLZXkpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmZpbmRLZXlJbklu
ZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIGZvdW5kRW5jb2RlZFByaW1h
cnlLZXkpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpmaW5kS2V5
SW5JbmRleCIpOwogICAgIEFTU0VSVChmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmlzRW1wdHkoKSk7
CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IEluZGV4RGF0YUtleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleSk7Ci0gICAgT3duUHRy
PExldmVsREJJdGVyYXRvcj4gaXQgPSB0cmFuc2FjdGlvbi0+Y3JlYXRlSXRlcmF0b3IoKTsKKyAg
ICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IG1fY3VycmVudFRyYW5zYWN0aW9uLT5jcmVh
dGVJdGVyYXRvcigpOwogICAgIGl0LT5zZWVrKGxldmVsZGJLZXkpOwogCiAgICAgZm9yICg7Oykg
ewpAQCAtMTA1NSw5ICsxMDcxLDkgQEAgc3RhdGljIGJvb2wgZmluZEtleUluSW5kZXgoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLAogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmFwcGVuZChw
LCBpdC0+dmFsdWUoKS5lbmQoKSAtIHApOwogCi0gICAgICAgIGlmICghdmVyc2lvbkV4aXN0cyh0
cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgdmVyc2lvbiwgZm91bmRFbmNv
ZGVkUHJpbWFyeUtleSkpIHsKKyAgICAgICAgaWYgKCF2ZXJzaW9uRXhpc3RzKG1fY3VycmVudFRy
YW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCB2ZXJzaW9uLCBmb3Vu
ZEVuY29kZWRQcmltYXJ5S2V5KSkgewogICAgICAgICAgICAgLy8gRGVsZXRlIHN0YWxlIGluZGV4
IGRhdGEgZW50cnkgYW5kIGNvbnRpbnVlLgotICAgICAgICAgICAgdHJhbnNhY3Rpb24tPnJlbW92
ZShpdC0+a2V5KCkpOworICAgICAgICAgICAgbV9jdXJyZW50VHJhbnNhY3Rpb24tPnJlbW92ZShp
dC0+a2V5KCkpOwogICAgICAgICAgICAgaXQtPm5leHQoKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CkBAIC0xMDY4LDEwICsxMDg0LDExIEBAIHN0YXRpYyBib29sIGZpbmRLZXlJ
bkluZGV4KExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJ
ZCwKIAogUGFzc1JlZlB0cjxJREJLZXk+IElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldFByaW1h
cnlLZXlWaWFJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGtleSkKIHsKKyAgICBJREJfVFJBQ0UoIklE
QkxldmVsREJCYWNraW5nU3RvcmU6OmdldFByaW1hcnlLZXlWaWFJbmRleCIpOwogICAgIEFTU0VS
VChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKICAgICBWZWN0b3I8Y2hhcj4gZm91bmRFbmNvZGVk
UHJpbWFyeUtleTsKLSAgICBpZiAoZmluZEtleUluSW5kZXgobV9jdXJyZW50VHJhbnNhY3Rpb24u
Z2V0KCksIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtleSwgZm91bmRFbmNv
ZGVkUHJpbWFyeUtleSkpIHsKKyAgICBpZiAoZmluZEtleUluSW5kZXgoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5LCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5KSkgewogICAg
ICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5OwogICAgICAgICBkZWNvZGVJREJLZXkoZm91
bmRFbmNvZGVkUHJpbWFyeUtleS5iZWdpbigpLCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmVuZCgp
LCBwcmltYXJ5S2V5KTsKICAgICAgICAgcmV0dXJuIHByaW1hcnlLZXkucmVsZWFzZSgpOwpAQCAt
MTA4MiwxMCArMTA5OSwxMSBAQCBQYXNzUmVmUHRyPElEQktleT4gSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6Z2V0UHJpbWFyeUtleVZpYUluZGV4KGludDY0X3QgZGF0YWJhcwogCiBib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBpbmRl
eEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSkKIHsKKyAgICBJREJfVFJBQ0Uo
IklEQkxldmVsREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgiKTsKICAgICBBU1NFUlQo
bV9jdXJyZW50VHJhbnNhY3Rpb24pOwogCiAgICAgVmVjdG9yPGNoYXI+IGZvdW5kRW5jb2RlZFBy
aW1hcnlLZXk7Ci0gICAgaWYgKCFmaW5kS2V5SW5JbmRleChtX2N1cnJlbnRUcmFuc2FjdGlvbi5n
ZXQoKSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgaW5kZXhLZXksIGZvdW5k
RW5jb2RlZFByaW1hcnlLZXkpKQorICAgIGlmICghZmluZEtleUluSW5kZXgoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgaW5kZXhLZXksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkZWNvZGVJREJLZXkoZm91bmRFbmNvZGVk
UHJpbWFyeUtleS5iZWdpbigpLCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5LmVuZCgpLCBmb3VuZFBy
aW1hcnlLZXkpOwpAQCAtMTUxOCw2ICsxNTM2LDcgQEAgYm9vbCBJbmRleEN1cnNvckltcGw6Omxv
YWRDdXJyZW50Um93KCkKIAogUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElE
QkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVs
REJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvciIpOwogICAgIEFTU0VSVChtX2N1
cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgQ3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRpb25zOwogCkBA
IC0xNTcyLDYgKzE1OTEsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJzbwogCiBQYXNzUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuSW5k
ZXhLZXlDdXJzb3IoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3I6OkRpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpvcGVuSW5kZXhLZXlDdXJzb3IiKTsKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24p
OwogICAgIEN1cnNvck9wdGlvbnMgY3Vyc29yT3B0aW9uczsKICAgICBib29sIGxvd2VyQm91bmQg
PSByYW5nZSAmJiByYW5nZS0+bG93ZXIoKTsKQEAgLTE2MjAsNiArMTY0MCw3IEBAIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5J
bmRleEtleUN1cnNvcihpCiAKIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElE
QkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcihpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5n
ZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKKyAgICBJREJfVFJB
Q0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvciIpOwogICAgIEFTU0VS
VChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgQ3Vyc29yT3B0aW9ucyBjdXJzb3JPcHRpb25z
OwogICAgIGJvb2wgbG93ZXJCb3VuZCA9IHJhbmdlICYmIHJhbmdlLT5sb3dlcigpOwpAQCAtMTY4
OSw2ICsxNzEwLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6
YmVnaW4oKQogCiBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpjb21t
aXQoKQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b246OmNvbW1pdCIpOwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZS0+bV9jdXJyZW50VHJhbnNh
Y3Rpb24pOwogICAgIGJvb2wgcmVzdWx0ID0gbV9iYWNraW5nU3RvcmUtPm1fY3VycmVudFRyYW5z
YWN0aW9uLT5jb21taXQoKTsKICAgICBtX2JhY2tpbmdTdG9yZS0+bV9jdXJyZW50VHJhbnNhY3Rp
b24uY2xlYXIoKTsKQEAgLTE2OTcsNiArMTcxOSw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb246OmNvbW1pdCgpCiAKIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb246OnJvbGxiYWNrKCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpyb2xsYmFjayIpOwogICAgIEFTU0VSVChtX2JhY2tp
bmdTdG9yZS0+bV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIG1fYmFja2luZ1N0b3JlLT5tX2N1
cnJlbnRUcmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKICAgICBtX2JhY2tpbmdTdG9yZS0+bV9jdXJy
ZW50VHJhbnNhY3Rpb24uY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCA0NzllZmVjYzA1
YWJiMTYwODMzMTUyYjIyOGVjZTZlZTc3NjYzOWVjLi5jMzc1OWNmN2UwZDM1MmMyMTVlNjc3Mjlm
ZWFlYzFiNDk5MWVkMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC04NSw2ICs4NSw4IEBAIHBy
b3RlY3RlZDoKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+
KTsKIAogcHJpdmF0ZToKKyAgICBib29sIGZpbmRLZXlJbkluZGV4KGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYs
IFZlY3RvcjxjaGFyPiYgZm91bmRFbmNvZGVkUHJpbWFyeUtleSk7CisKICAgICBTdHJpbmcgbV9p
ZGVudGlmaWVyOwogICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEltcGw+IG1fZmFjdG9yeTsK
ICAgICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBtX2RiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcAppbmRleCBjZTA5MTVhMzA2ZjFhNzNmNGJjOWY1ZTI5Y2Q3MGNhNmYzYTlmMjc1Li43MWZm
MDcxYzQwMjZkNmM1MTY2YjU5MjJiNzY4NzgzNTc0NGQ1MDRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGFkZGlu
Z0tleUFsbG93ZWQoSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElEQktleSog
aW5kZXhLZXksIGNvbnN0IElEQktleSogcHJpbWFyeUtleSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5KSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2luZGV4TWV0YWRhdGEudW5pcXVlKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzYxMjM0NzAxNDE4M2M5ZGE2MWU4ZGJhZmU2
NWZhMzg1OTk5MzQ3ZS4uYTIzM2U3YTMwZTk3MDE3YjdlMDgwYzA2MDY1NDY1MGI4NThhNTM0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcApAQCAtMjYyLDYgKzI2Miw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnVucmVnaXN0
ZXJSZXF1ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9u
QWJvcnQoKQogeworICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb246Om9uQWJvcnQiKTsKICAg
ICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7CiAKICAgICBpZiAobV9zdGF0ZSAhPSBGaW5p
c2hpbmcpIHsKQEAgLTI5NCw2ICsyOTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0
KCkKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSgpCiB7CisgICAgSURCX1RSQUNF
KCJJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSIpOwogICAgIEFTU0VSVChtX3N0YXRlICE9IEZp
bmlzaGVkKTsKICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwogICAgIG1fb2JqZWN0U3RvcmVDbGVh
bnVwTWFwLmNsZWFyKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158455</attachid>
            <date>2012-08-14 17:33:14 -0700</date>
            <delta_ts>2012-08-14 18:18:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-93914-20120814173241.patch</filename>
            <type>text/plain</type>
            <size>17131</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA3ZmY3YmUyMjk2YTIw
ZDg2MTE3YWYzOWZhYzM3ZmE2MTIwMjdjMi4uNTg4MDI2OWIzYzNmZmY0YzU5YzM0Nzc2OTRjMGEx
ZTlhMDEyZTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA4LTEzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IGFk
ZCB0cmFjaW5nIHRvIElEQkxldmVsREJCYWNraW5nU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VG9ueSBDaGFuZy4KKworICAgICAgICBBZGQgYSBidW5jaCBvZiB0cmFjZSBldmVudHMgdG8gdGhl
IGxvd2VyIGxldmVsCisgICAgICAgIGRhdGFiYXNlIGxheWVyLCB0byBzZXBhcmF0ZSBkYXRhYmFz
ZSBzbG93bmVzcworICAgICAgICBmcm9tIGNvcmUgSURCIHNsb3duZXNzLgorCisgICAgICAgIEFs
c28gbW92aW5nIGZpbmRLZXlJbkluZGV4IGludG8gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZSB0bwor
ICAgICAgICBldmVudHVhbGx5IG1ha2UgaXQgY29uc3QuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBqdXN0IGFkZGluZyBkZWJ1ZyBsb2dnaW5nLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJC
YWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZVJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OnB1dE9iamVjdFN0b3JlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmVSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpmaW5kS2V5SW5J
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRQcmlt
YXJ5S2V5VmlhSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6a2V5RXhpc3RzSW5JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpyb2xsYmFj
ayk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5o
OgorICAgICAgICAoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9ydCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSk6CisKIDIwMTItMDgtMTQgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMjU1MTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGE4MDliYzkyYTM2
YjkyYTA0NzVlYWMyZTg2ZmUzZWJhOGY1NjI2NWYuLjA0YTRmYmJhMjUwMzA3YWVjNDViZmE3OTM5
NDUyYTZlZWM1ZGEzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJMZXZlbERCQmFja2luZ1N0b3Jl
LmgiCisjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAjaWYgVVNFKExFVkVMREIpCkBAIC0yMDAsNiArMjAxLDcgQEAgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6fklEQkxldmVsREJCYWNraW5nU3RvcmUoKQogCiBQYXNzUmVmUHRyPElEQkJhY2tp
bmdTdG9yZT4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGF0aEJhc2VBcmcsIGNvbnN0IFN0cmluZyYgZmls
ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSkKIHsKKyAgICBJREJf
VFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW4iKTsKICAgICBTdHJpbmcgcGF0aEJh
c2UgPSBwYXRoQmFzZUFyZzsKIAogICAgIE93blB0cjxMZXZlbERCQ29tcGFyYXRvcj4gY29tcGFy
YXRvciA9IGFkb3B0UHRyKG5ldyBDb21wYXJhdG9yKCkpOwpAQCAtMzU3LDYgKzM1OSw3IEBAIHN0
YXRpYyBib29sIGRlbGV0ZVJhbmdlKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNv
bnN0IFZlY3RvcjxjaGFyPiYgYmVnCiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVs
ZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQogeworICAgIElEQl9UUkFDRSgiSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UiKTsKICAgICBSZWZQdHI8TGV2ZWxEQlRy
YW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRlKG1fZGIu
Z2V0KCkpOwogCiAgICAgaW50NjRfdCBkYXRhYmFzZUlkOwpAQCAtMzk3LDYgKzQwMCw3IEBAIHN0
YXRpYyBib29sIGNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoY29uc3QgTGV2ZWxEQkl0
ZXJhdG9yKiBpdCwgY29uc3QgVmVjCiAKIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0
T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElk
cywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRL
ZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncykKIHsKKyAgICBJ
REJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyIpOwogICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVu
Y29kZShkYXRhYmFzZUlkLCAxLCAwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkKTsKIApAQCAt
NTA4LDYgKzUxMiw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld09iamVjdFN0b3JlSWQoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhCiAKIGJvb2wgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFzZUlkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3Jl
bWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKQogeworICAgIElEQl9UUkFDRSgi
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKICAgICBBU1NFUlQo
bV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IGdldE5l
d09iamVjdFN0b3JlSWQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQpOwog
ICAgIGlmIChvYmplY3RTdG9yZUlkIDwgMCkKQEAgLTU4NCw2ICs1ODksNyBAQCBib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJgogCiB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVj
dFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogeworICAg
IElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsK
ICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogCiAgICAgU3RyaW5nIG9iamVjdFN0
b3JlTmFtZTsKQEAgLTYwNCw2ICs2MTAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplYwogCiBT
dHJpbmcgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVSZWNvcmQoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYga2V5KQog
eworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVS
ZWNvcmQiKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IE9iamVjdFN0b3Jl
RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleSk7CiAgICAgVmVj
dG9yPGNoYXI+IGRhdGE7CiAKQEAgLTY2Miw2ICs2NjksNyBAQCBzdGF0aWMgaW50NjRfdCBnZXRO
ZXdWZXJzaW9uTnVtYmVyKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3Qg
ZGF0YQogCiBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1dE9iamVjdFN0b3JlUmVjb3Jk
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKiBy
ZWNvcmRJZGVudGlmaWVyKQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6cHV0T2JqZWN0U3RvcmVSZWNvcmQiKTsKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSk7CiAg
ICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBpbnQ2NF90IHZlcnNpb24gPSBn
ZXROZXdWZXJzaW9uTnVtYmVyKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkKTsKQEAgLTY4Niw2ICs2OTQsNyBAQCBib29sIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OnB1dE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYgogCiB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7CisgICAgSURCX1RSQUNF
KCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0b3JlIik7CiAgICAgQVNTRVJU
KG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkg
PSBLZXlQcmVmaXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCkuZW5jb2RlKCk7CiAgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBLZXlQcmVmaXgoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCArIDEsIDApLmVuY29kZSgpOwpAQCAtNzAwLDYgKzcwOSw3IEBAIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IElEQkxldmVsREJC
YWNraW5nU3RvcmU6CiAKIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0
U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKIHsKKyAg
ICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlUmVj
b3JkIik7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBjb25zdCBMZXZl
bERCUmVjb3JkSWRlbnRpZmllciogbGV2ZWxEQlJlY29yZElkZW50aWZpZXIgPSBzdGF0aWNfY2Fz
dDxjb25zdCBMZXZlbERCUmVjb3JkSWRlbnRpZmllcio+KHJlY29yZElkZW50aWZpZXIpOwogCkBA
IC03NzQsNiArNzg0LDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0
ZUtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoaW50NjRfdCBkYXRhYmEKIAogYm9vbCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmIGtleSwgT2JqZWN0U3RvcmVS
ZWNvcmRJZGVudGlmaWVyKiBmb3VuZFJlY29yZElkZW50aWZpZXIpCiB7CisgICAgSURCX1RSQUNF
KCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlIik7CiAgICAg
QVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2
ZWxkYktleSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIGtleSk7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7CkBAIC04NDAsNiArODUxLDcgQEAg
c3RhdGljIGJvb2wgY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGNvbnN0IExldmVsREJJdGVyYXRv
ciogaXQsIGNvbnN0IFZlY3RvcjxjaGEKIAogdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0
b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9y
PElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxh
Z3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpCiB7CisgICAgSURCX1RSQUNF
KCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzIik7CiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+IHN0YXJ0S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIDAsIDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gSW5k
ZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQgKyAxLCAwLCAw
KTsKIApAQCAtOTE2LDYgKzkyOCw3IEBAIHN0YXRpYyBpbnQ2NF90IGdldE5ld0luZGV4SWQoTGV2
ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkCiAKIGJvb2wg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGlu
ZGV4SWQpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleCIpOwogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgaW5kZXhJZCA9
IGdldE5ld0luZGV4SWQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQpOwogICAgIGlmIChpbmRleElkIDwgMCkKQEAgLTk1NSw2ICs5NjgsNyBAQCBi
b29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZQogCiB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRl
bGV0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpk
ZWxldGVJbmRleCIpOwogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gaW5kZXhNZXRhRGF0YVN0YXJ0ID0gSW5kZXhNZXRhRGF0YUtleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDApOwpAQCAtOTc2LDYg
Kzk5MCw3IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiAKIGJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25z
dCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCiB7CisgICAg
SURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQi
KTsKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKGluZGV4SWQgPj0gTWlu
aW11bUluZGV4SWQpOwogICAgIGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKiBsZXZlbERC
UmVjb3JkSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlm
aWVyKj4ocmVjb3JkSWRlbnRpZmllcik7CkBAIC0xMDM1LDEyICsxMDUwLDEzIEBAIHN0YXRpYyBi
b29sIHZlcnNpb25FeGlzdHMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpCiAgICAgcmV0dXJuIGRlY29kZUludChkYXRhLmJlZ2luKCksIGRhdGEu
ZW5kKCkpID09IHZlcnNpb247CiB9CiAKLXN0YXRpYyBib29sIGZpbmRLZXlJbkluZGV4KExldmVs
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8
Y2hhcj4mIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkpCitib29sIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmZpbmRLZXlJbkluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIGZv
dW5kRW5jb2RlZFByaW1hcnlLZXkpCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpmaW5kS2V5SW5JbmRleCIpOwogICAgIEFTU0VSVChmb3VuZEVuY29kZWRQcmltYXJ5
S2V5LmlzRW1wdHkoKSk7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbGV2ZWxkYktleSA9IElu
ZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIGtl
eSk7Ci0gICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSB0cmFuc2FjdGlvbi0+Y3JlYXRl
SXRlcmF0b3IoKTsKKyAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IG1fY3VycmVudFRy
YW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGl0LT5zZWVrKGxldmVsZGJLZXkpOwog
CiAgICAgZm9yICg7OykgewpAQCAtMTA1NSw5ICsxMDcxLDkgQEAgc3RhdGljIGJvb2wgZmluZEtl
eUluSW5kZXgoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3VuZEVuY29kZWRQcmlt
YXJ5S2V5LmFwcGVuZChwLCBpdC0+dmFsdWUoKS5lbmQoKSAtIHApOwogCi0gICAgICAgIGlmICgh
dmVyc2lvbkV4aXN0cyh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgdmVy
c2lvbiwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkpIHsKKyAgICAgICAgaWYgKCF2ZXJzaW9uRXhp
c3RzKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCB2ZXJzaW9uLCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5KSkgewogICAgICAgICAgICAgLy8gRGVs
ZXRlIHN0YWxlIGluZGV4IGRhdGEgZW50cnkgYW5kIGNvbnRpbnVlLgotICAgICAgICAgICAgdHJh
bnNhY3Rpb24tPnJlbW92ZShpdC0+a2V5KCkpOworICAgICAgICAgICAgbV9jdXJyZW50VHJhbnNh
Y3Rpb24tPnJlbW92ZShpdC0+a2V5KCkpOwogICAgICAgICAgICAgaXQtPm5leHQoKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xMDY4LDEwICsxMDg0LDExIEBAIHN0YXRp
YyBib29sIGZpbmRLZXlJbkluZGV4KExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGlu
dDY0X3QgZGF0YWJhc2VJZCwKIAogUGFzc1JlZlB0cjxJREJLZXk+IElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmdldFByaW1hcnlLZXlWaWFJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmIGtleSkKIHsKKyAg
ICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldFByaW1hcnlLZXlWaWFJbmRl
eCIpOwogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKICAgICBWZWN0b3I8Y2hh
cj4gZm91bmRFbmNvZGVkUHJpbWFyeUtleTsKLSAgICBpZiAoZmluZEtleUluSW5kZXgobV9jdXJy
ZW50VHJhbnNhY3Rpb24uZ2V0KCksIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQs
IGtleSwgZm91bmRFbmNvZGVkUHJpbWFyeUtleSkpIHsKKyAgICBpZiAoZmluZEtleUluSW5kZXgo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5LCBmb3VuZEVuY29kZWRQcmlt
YXJ5S2V5KSkgewogICAgICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5OwogICAgICAgICBk
ZWNvZGVJREJLZXkoZm91bmRFbmNvZGVkUHJpbWFyeUtleS5iZWdpbigpLCBmb3VuZEVuY29kZWRQ
cmltYXJ5S2V5LmVuZCgpLCBwcmltYXJ5S2V5KTsKICAgICAgICAgcmV0dXJuIHByaW1hcnlLZXku
cmVsZWFzZSgpOwpAQCAtMTA4MiwxMCArMTA5OSwxMSBAQCBQYXNzUmVmUHRyPElEQktleT4gSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0UHJpbWFyeUtleVZpYUluZGV4KGludDY0X3QgZGF0YWJh
cwogCiBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29u
c3QgSURCS2V5JiBpbmRleEtleSwgUmVmUHRyPElEQktleT4mIGZvdW5kUHJpbWFyeUtleSkKIHsK
KyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgi
KTsKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwogCiAgICAgVmVjdG9yPGNoYXI+
IGZvdW5kRW5jb2RlZFByaW1hcnlLZXk7Ci0gICAgaWYgKCFmaW5kS2V5SW5JbmRleChtX2N1cnJl
bnRUcmFuc2FjdGlvbi5nZXQoKSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
aW5kZXhLZXksIGZvdW5kRW5jb2RlZFByaW1hcnlLZXkpKQorICAgIGlmICghZmluZEtleUluSW5k
ZXgoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgaW5kZXhLZXksIGZvdW5kRW5j
b2RlZFByaW1hcnlLZXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkZWNvZGVJREJL
ZXkoZm91bmRFbmNvZGVkUHJpbWFyeUtleS5iZWdpbigpLCBmb3VuZEVuY29kZWRQcmltYXJ5S2V5
LmVuZCgpLCBmb3VuZFByaW1hcnlLZXkpOwpAQCAtMTUxOCw2ICsxNTM2LDcgQEAgYm9vbCBJbmRl
eEN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKIAogUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU6OkN1cnNvcj4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29y
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlS
YW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKKyAgICBJREJf
VFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5PYmplY3RTdG9yZUN1cnNvciIpOwog
ICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgQ3Vyc29yT3B0aW9ucyBjdXJz
b3JPcHRpb25zOwogCkBAIC0xNTcyLDYgKzE1OTEsNyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJz
bwogCiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpvcGVuSW5kZXhLZXlDdXJzb3IoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJ
REJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CisgICAgSURCX1RSQUNFKCJJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhLZXlDdXJzb3IiKTsKICAgICBBU1NFUlQobV9jdXJy
ZW50VHJhbnNhY3Rpb24pOwogICAgIEN1cnNvck9wdGlvbnMgY3Vyc29yT3B0aW9uczsKICAgICBi
b29sIGxvd2VyQm91bmQgPSByYW5nZSAmJiByYW5nZS0+bG93ZXIoKTsKQEAgLTE2MjAsNiArMTY0
MCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkxldmVsREJCYWNr
aW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcihpCiAKIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0
b3JlOjpDdXJzb3I+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcihpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikK
IHsKKyAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNv
ciIpOwogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAgICAgQ3Vyc29yT3B0aW9u
cyBjdXJzb3JPcHRpb25zOwogICAgIGJvb2wgbG93ZXJCb3VuZCA9IHJhbmdlICYmIHJhbmdlLT5s
b3dlcigpOwpAQCAtMTY4OSw2ICsxNzEwLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbjo6YmVnaW4oKQogCiBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uOjpjb21taXQoKQogeworICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb246OmNvbW1pdCIpOwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZS0+
bV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGJvb2wgcmVzdWx0ID0gbV9iYWNraW5nU3RvcmUt
Pm1fY3VycmVudFRyYW5zYWN0aW9uLT5jb21taXQoKTsKICAgICBtX2JhY2tpbmdTdG9yZS0+bV9j
dXJyZW50VHJhbnNhY3Rpb24uY2xlYXIoKTsKQEAgLTE2OTcsNiArMTcxOSw3IEBAIGJvb2wgSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmNvbW1pdCgpCiAKIHZvaWQgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OnJvbGxiYWNrKCkKIHsKKyAgICBJREJfVFJB
Q0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpyb2xsYmFjayIpOwogICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZS0+bV9jdXJyZW50VHJhbnNhY3Rpb24pOwogICAgIG1fYmFj
a2luZ1N0b3JlLT5tX2N1cnJlbnRUcmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKICAgICBtX2JhY2tp
bmdTdG9yZS0+bV9jdXJyZW50VHJhbnNhY3Rpb24uY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaApp
bmRleCA0NzllZmVjYzA1YWJiMTYwODMzMTUyYjIyOGVjZTZlZTc3NjYzOWVjLi5jMzc1OWNmN2Uw
ZDM1MmMyMTVlNjc3MjlmZWFlYzFiNDk5MWVkMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC04
NSw2ICs4NSw4IEBAIHByb3RlY3RlZDoKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgUGFzc093blB0cjxM
ZXZlbERCRGF0YWJhc2U+KTsKIAogcHJpdmF0ZToKKyAgICBib29sIGZpbmRLZXlJbkluZGV4KGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IGNvbnN0IElEQktleSYsIFZlY3RvcjxjaGFyPiYgZm91bmRFbmNvZGVkUHJpbWFyeUtleSk7CisK
ICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZElt
cGw+IG1fZmFjdG9yeTsKICAgICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBtX2RiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBjZTA5MTVhMzA2ZjFhNzNmNGJjOWY1ZTI5Y2Q3MGNh
NmYzYTlmMjc1Li43MWZmMDcxYzQwMjZkNmM1MTY2YjU5MjJiNzY4NzgzNTc0NGQ1MDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGFkZGluZ0tleUFsbG93ZWQoSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IElEQktleSogaW5kZXhLZXksIGNvbnN0IElEQktleSogcHJpbWFyeUtleSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5
KiBwcmltYXJ5S2V5KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2luZGV4TWV0YWRhdGEu
dW5pcXVlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNzYxMjM0NzAxNDE4
M2M5ZGE2MWU4ZGJhZmU2NWZhMzg1OTk5MzQ3ZS4uYTIzM2U3YTMwZTk3MDE3YjdlMDgwYzA2MDY1
NDY1MGI4NThhNTM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMjYyLDYgKzI2Miw3IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246OnVucmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCiAKIHZvaWQgSURC
VHJhbnNhY3Rpb246Om9uQWJvcnQoKQogeworICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb246
Om9uQWJvcnQiKTsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7CiAKICAgICBpZiAo
bV9zdGF0ZSAhPSBGaW5pc2hpbmcpIHsKQEAgLTI5NCw2ICsyOTUsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpvbkFib3J0KCkKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSgpCiB7
CisgICAgSURCX1RSQUNFKCJJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSIpOwogICAgIEFTU0VS
VChtX3N0YXRlICE9IEZpbmlzaGVkKTsKICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwogICAgIG1f
b2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>