<?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>103688</bug_id>
          
          <creation_ts>2012-11-29 17:09:27 -0800</creation_ts>
          <short_desc>IndexedDB: Make leveldb histogram entries more fine-grained</short_desc>
          <delta_ts>2012-12-04 14:39:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>103580</dependson>
          <blocked>103782</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>jsbell</cc>
    
    <cc>michaeln</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>779612</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-29 17:09:27 -0800</bug_when>
    <thetext>IndexedDB: Each place of failure should have its own histogram entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779618</commentid>
    <comment_count>1</comment_count>
      <attachid>176853</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-29 17:13:36 -0800</bug_when>
    <thetext>Created attachment 176853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779631</commentid>
    <comment_count>2</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-29 17:17:57 -0800</bug_when>
    <thetext>Josh and/or Alec, could you take a look at this?

Given how little we know about what&apos;s happening, I want to go with this brute force approach instead of trying to be too intelligent. Counterproposals welcome of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779696</commentid>
    <comment_count>3</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-29 18:09:16 -0800</bug_when>
    <thetext>Michael did something similar with WebSQL callsites.  His was more structured though, he broke them out by operation type, and then by callsite.

http://go/michaelswebsqlstats</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780303</commentid>
    <comment_count>4</comment_count>
      <attachid>177007</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-30 12:22:50 -0800</bug_when>
    <thetext>Created attachment 177007
Patch

updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780517</commentid>
    <comment_count>5</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-30 16:15:23 -0800</bug_when>
    <thetext>Tony, could you review this?

After some uncertainty we (jsbell+alecflett+me) agreed in person that this approach was fine. Your thoughts are also welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780533</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-30 16:36:39 -0800</bug_when>
    <thetext>Each value you add takes additional memory, so trying to keep the number of values small will help a bit.

I&apos;m not sure if you plan on reusing/renumbering values or just keep adding.  It seems like it would be confusing as the code changes to keep track of what values are needed.

So while this works, I think it would be a bit better if instead of just numbering the errors, you named them and perhaps grouped them.  For example, you could have a distinct error for each function and name the enum values to match the function names.  This seems easier to maintain going forward.

On the other hand, maybe you plan on removing this after one or two dev channel release, in which case, maybe it doesn&apos;t matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781909</commentid>
    <comment_count>7</comment_count>
      <attachid>177340</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-03 15:00:23 -0800</bug_when>
    <thetext>Created attachment 177340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781917</commentid>
    <comment_count>8</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-03 15:05:28 -0800</bug_when>
    <thetext>This patch switches to the one-enum-entry-per-function approach. Tony, is this what you had in mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781954</commentid>
    <comment_count>9</comment_count>
      <attachid>177340</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-03 15:34:11 -0800</bug_when>
    <thetext>Comment on attachment 177340
Patch

Yes, that&apos;s what I had in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782018</commentid>
    <comment_count>10</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-03 16:31:34 -0800</bug_when>
    <thetext>just coming late to this, (maybe too late) but how do the additional values use more memory? I think we can safely assume that these enum values are just going to get hardcoded into the compiled instructions, so there shouldn&apos;t be any difference between 

movl eax, 0x12

and 

movl eax, 0x23</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782262</commentid>
    <comment_count>11</comment_count>
      <attachid>177340</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 23:33:53 -0800</bug_when>
    <thetext>Comment on attachment 177340
Patch

Rejecting attachment 177340 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ripts/update-webkit line 152.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 2
Updating OpenSource
From http://git.chromium.org/external/Webkit
   9961a7b..ef0ca77  HEAD       -&gt; origin/HEAD
error: Ref refs/remotes/origin/master is at ef0ca77a554ed2a07b001ee4935266d6301b2bf8 but expected 9961a7b754078ea893b086fbc787c57745c8a4db
 ! 9961a7b..ef0ca77  master     -&gt; origin/master  (unable to update local ref)
Died at Tools/Scripts/update-webkit line 152.

Full output: http://queues.webkit.org/results/15117748</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782330</commentid>
    <comment_count>12</comment_count>
      <attachid>177340</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 00:39:10 -0800</bug_when>
    <thetext>Comment on attachment 177340
Patch

Rejecting attachment 177340 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ripts/update-webkit line 152.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 2
Updating OpenSource
From http://git.chromium.org/external/Webkit
   54297d7..837f7c4  HEAD       -&gt; origin/HEAD
error: Ref refs/remotes/origin/master is at 837f7c4da6fc1cce27d8517a8319c0e408da63da but expected 54297d74214132a39292f05bb9466fdab588b0aa
 ! 54297d7..837f7c4  master     -&gt; origin/master  (unable to update local ref)
Died at Tools/Scripts/update-webkit line 152.

Full output: http://queues.webkit.org/results/15121656</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782430</commentid>
    <comment_count>13</comment_count>
      <attachid>177340</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 03:05:42 -0800</bug_when>
    <thetext>Comment on attachment 177340
Patch

Clearing flags on attachment: 177340

Committed r136497: &lt;http://trac.webkit.org/changeset/136497&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782431</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 03:05:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782851</commentid>
    <comment_count>15</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 13:27:13 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; just coming late to this, (maybe too late) but how do the additional values use more memory? I think we can safely assume that these enum values are just going to get hardcoded into the compiled instructions, so there shouldn&apos;t be any difference between 
&gt; 
&gt; movl eax, 0x12
&gt; 
&gt; and 
&gt; 
&gt; movl eax, 0x23

I&apos;m assuming the histogram code allocates an int[] of size IDBLevelDBBackingStoreInternalErrorMax and then increments each entry as we report it, so the more error codes we have the larger that array has to be.

But your argument might assume this and be more advanced, not sure. Is it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782959</commentid>
    <comment_count>16</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-04 14:39:46 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I&apos;m assuming the histogram code allocates an int[] of size IDBLevelDBBackingStoreInternalErrorMax and then increments each entry as we report it, so the more error codes we have the larger that array has to be.

Yes, that&apos;s the extra memory I&apos;m referring to.  I think we also keep a copy of the histogram in the browser process and each renderer process that adds to this histogram.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176853</attachid>
            <date>2012-11-29 17:13:36 -0800</date>
            <delta_ts>2012-11-30 12:22:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103688-20121129171109.patch</filename>
            <type>text/plain</type>
            <size>14169</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzYxYzM2MDZlNmFiMmMy
ZjRhZTJmOTM5ZmI0NGM5ZTg3YWZmYTg4Ni4uZGNlZDM3MjA0MzBiZmE1MGQxNWQ3ODJjNzZlMDBj
NmQ3MWM5NTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTI5ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEVh
Y2ggcGxhY2Ugb2YgZmFpbHVyZSBzaG91bGQgaGF2ZSBpdHMgb3duIGhpc3RvZ3JhbSBlbnRyeQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNjg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2l2ZSBlYWNo
IEludGVybmFsRXJyb3IoUmVhZEVycm9yKSBsaW5lIGl0cyBvd24gZW51bSBlbnRyeS4gSWYgdGhl
CisgICAgICAgIGRpc3RyaWJ1dGlvbiBvZiBlcnJvciBzb3VyY2VzIGlzbid0IHdoYXQgd2UnZCBl
eHBlY3QgaXQgbWF5IHBvaW50IHRvCisgICAgICAgIGEgbG9naWMgZXJyb3IuCisKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0VXBNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Omdl
dElEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
OjpnZXRPYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpn
ZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpnZXRLZXlHZW5l
cmF0b3JDdXJyZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6
a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmdldEluZGV4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpmaW5k
S2V5SW5JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpPYmplY3RTdG9yZUtleUN1cnNvckltcGw6
OmxvYWRDdXJyZW50Um93KToKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVjdFN0b3JlQ3Vyc29ySW1w
bDo6bG9hZEN1cnJlbnRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhLZXlDdXJzb3JJbXBs
Ojpsb2FkQ3VycmVudFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmRleEN1cnNvckltcGw6Omxv
YWRDdXJyZW50Um93KToKKwogMjAxMi0xMS0yOCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBQcm9wYWdhdGUgbW9yZSBsZXZlbGRiIGVy
cm9ycyB0byBzY3JpcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDYxMjUzZmEwMTRiMjRkYmE5NTY5MGE1NDdkOTk3
MTRjZGY2ZjM4NTguLmI4MGFhYmU2YzFmMWU2OTg3NGYzYzU2ZDVlMmFmNGZmNmE4YzA4NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNTIsOSArNTIsMzYgQEAgdXNpbmcgbmFtZXNwYWNlIElEQkxldmVsREJDb2Rp
bmc7CiBjb25zdCBpbnQ2NF90IEtleUdlbmVyYXRvckluaXRpYWxOdW1iZXIgPSAxOyAvLyBGcm9t
IHRoZSBJbmRleGVkREIgc3BlY2lmaWNhdGlvbi4KIAogZW51bSBJREJMZXZlbERCQmFja2luZ1N0
b3JlSW50ZXJuYWxFcnJvclR5cGUgewotICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJy
b3IsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjAsCiAgICAgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZVdyaXRlRXJyb3IsCiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUNvbnNp
c3RlbmN5RXJyb3IsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjEsCisgICAg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjIsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVJlYWRFcnJvcjMsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjQsCisg
ICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjUsCisgICAgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZVJlYWRFcnJvcjYsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjcs
CisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjgsCisgICAgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVJlYWRFcnJvcjksCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJv
cjEwLAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxMSwKKyAgICBJREJMZXZl
bERCQmFja2luZ1N0b3JlUmVhZEVycm9yMTIsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJl
YWRFcnJvcjEzLAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxNCwKKyAgICBJ
REJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMTUsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVJlYWRFcnJvcjE2LAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxNywK
KyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMTgsCisgICAgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVJlYWRFcnJvcjE5LAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJy
b3IyMCwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjEsCisgICAgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjIyLAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3IyMywKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjQsCisgICAg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjI1LAorICAgIElEQkxldmVsREJCYWNraW5n
U3RvcmVSZWFkRXJyb3IyNiwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjcs
CiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUludGVybmFsRXJyb3JNYXgsCiB9Owogc3RhdGlj
IGlubGluZSB2b2lkIHJlY29yZEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUlu
dGVybmFsRXJyb3JUeXBlIHR5cGUpCkBAIC0xOTgsNyArMjI1LDcgQEAgc3RhdGljIGJvb2wgc2V0
VXBNZXRhZGF0YShMZXZlbERCRGF0YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKICAg
ICAgICAgICAgIGZvciAoaXQtPnNlZWsoc3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBh
cmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwOyBpdC0+bmV4dCgpKSB7CiAgICAgICAgICAg
ICAgICAgaW50NjRfdCBkYXRhYmFzZUlkID0gMDsKICAgICAgICAgICAgICAgICBpZiAoIWdldElu
dCh0cmFuc2FjdGlvbi5nZXQoKSwgaXQtPmtleSgpLCBkYXRhYmFzZUlkKSkgewotICAgICAgICAg
ICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3Ip
OworICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3Rv
cmVSZWFkRXJyb3IxKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gaW50VmVyc2lvbktleSA9
IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBEYXRhYmFzZU1ldGFEYXRh
S2V5OjpVc2VySW50VmVyc2lvbik7CkBAIC0zNjIsMTMgKzM4OSwxMyBAQCBib29sIElEQkJhY2tp
bmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRh
dGFiYXNlTWV0YQogCiAgICAgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRh
RGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZl
cnNpb24pLCBtZXRhZGF0YS0+dmVyc2lvbik7CiAgICAgaWYgKCFvaykgewotICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IyKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIG9rID0gZ2V0VmFySW50KG1fZGIuZ2V0KCksIERhdGFi
YXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6
OlVzZXJJbnRWZXJzaW9uKSwgbWV0YWRhdGEtPmludFZlcnNpb24pOwogICAgIGlmICghb2spIHsK
LSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsK
KyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMyk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKG1ldGFkYXRhLT5pbnRWZXJz
aW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKQpAQCAtNDk0LDcg
KzUyMSw3IEBAIFZlY3RvcjxJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBJREJCYWNraW5nU3RvcmU6
OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlCiAgICAgICAgIHAgPSBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjpkZWNvZGUocCwgbGltaXQsICZtZXRhRGF0YUtleSk7CiAgICAgICAgIEFT
U0VSVChwKTsKICAgICAgICAgaWYgKG1ldGFEYXRhS2V5Lm1ldGFEYXRhVHlwZSgpICE9IE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6Ok5hbWUpIHsKLSAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3I0KTsKICAgICAgICAgICAgIC8vIFBvc3Np
YmxlIHN0YWxlIG1ldGFkYXRhLCBidXQgZG9uJ3QgZmFpbCB0aGUgbG9hZC4KICAgICAgICAgICAg
IGl0LT5uZXh0KCk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTUwNywzMyArNTM0LDMzIEBA
IFZlY3RvcjxJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBJREJCYWNraW5nU3RvcmU6OmdldE9iamVj
dFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlCiAKICAgICAgICAgaXQtPm5leHQoKTsKICAgICAgICAg
aWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBv
YmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlQYXRoKSkgewotICAgICAg
ICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAg
ICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgSURCS2V5UGF0aCBrZXlQ
YXRoID0gZGVjb2RlSURCS2V5UGF0aChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5l
bmQoKSk7CiAKICAgICAgICAgaXQtPm5leHQoKTsKICAgICAgICAgaWYgKCFjaGVja09iamVjdFN0
b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjpBdXRvSW5jcmVtZW50KSkgewotICAgICAgICAgICAgSW50ZXJu
YWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjYpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBhdXRvSW5jcmVtZW50ID0gZGVjb2Rl
Qm9vbChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKICAgICAgICAg
aXQtPm5leHQoKTsgLy8gSXMgZXZpY2F0YmxlLgogICAgICAgICBpZiAoIWNoZWNrT2JqZWN0U3Rv
cmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OkV2aWN0YWJsZSkpIHsKLSAgICAgICAgICAgIEludGVybmFsRXJy
b3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgICAgICBJbnRlcm5h
bEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3I3KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8gTGFzdCB2ZXJzaW9uLgog
ICAgICAgICBpZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0
b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Okxhc3RWZXJzaW9u
KSkgewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVh
ZEVycm9yKTsKKyAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZVJlYWRFcnJvcjgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBp
dC0+bmV4dCgpOyAvLyBNYXhpbXVtIGluZGV4IGlkIGFsbG9jYXRlZC4KICAgICAgICAgaWYgKCFj
aGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RT
dG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpNYXhJbmRleElkKSkgewotICAgICAgICAg
ICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAg
ICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaW50NjRfdCBtYXhJbmRleElk
ID0gZGVjb2RlSW50KGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKQEAg
LTU0Niw3ICs1NzMsNyBAQCBWZWN0b3I8SURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gSURCQmFja2lu
Z1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZQogICAgICAgICAgICAgLy8g
KDIpIExhdGVyLCBudWxsIHZzLiBzdHJpbmcgdnMuIGFycmF5IHdhcyBzdG9yZWQgaW4gdGhlIGtl
eVBhdGggaXRzZWxmLgogICAgICAgICAgICAgLy8gU28gdGhpcyBjaGVjayBpcyBvbmx5IHJlbGV2
YW50IGZvciBzdHJpbmctdHlwZSBrZXlQYXRocy4KICAgICAgICAgICAgIGlmICghaGFzS2V5UGF0
aCAmJiAoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSAmJiAha2V5UGF0
aC5zdHJpbmcoKS5pc0VtcHR5KCkpKSB7Ci0gICAgICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgICAgICAgICBJbnRlcm5h
bEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxMCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0tleVBhdGgpCkBA
IC02NDIsNyArNjY5LDcgQEAgU3RyaW5nIElEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQKICAgICBpbnQ2NF90IHZl
cnNpb247CiAgICAgY29uc3QgY2hhciogcCA9IGRlY29kZVZhckludChkYXRhLmJlZ2luKCksIGRh
dGEuZW5kKCksIHZlcnNpb24pOwogICAgIGlmICghcCkgewotICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxMSk7CiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICB9CiAgICAgKHZvaWQpIHZlcnNpb247CkBAIC03MjMsNyArNzUwLDcgQEAgYm9v
bCBJREJCYWNraW5nU3RvcmU6OmdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbioKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgYm9vbCBv
ayA9IGxldmVsREJUcmFuc2FjdGlvbi0+c2FmZUdldChrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
S2V5LCBkYXRhLCBmb3VuZCk7CiAgICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxMik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgaWYgKGZvdW5kKQpAQCAtNzg3LDcgKzgxNCw3IEBAIGJvb2wgSURCQmFj
a2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zCiAKICAgICBib29sIG9rID0gbGV2ZWxEQlRyYW5zYWN0aW9uLT5zYWZlR2V0
KGxldmVsZGJLZXksIGRhdGEsIGZvdW5kKTsKICAgICBpZiAoIW9rKSB7Ci0gICAgICAgIEludGVy
bmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgIEludGVy
bmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjEzKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoIWZvdW5kKQpAQCAtODM2LDcgKzg2Myw3IEBAIFZl
Y3RvcjxJREJJbmRleE1ldGFkYXRhPiBJREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90CiAgICAgICAgIHAgPSBJbmRleE1ldGFEYXRhS2V5OjpkZWNv
ZGUocCwgbGltaXQsICZtZXRhRGF0YUtleSk7CiAgICAgICAgIEFTU0VSVChwKTsKICAgICAgICAg
aWYgKG1ldGFEYXRhS2V5Lm1ldGFEYXRhVHlwZSgpICE9IEluZGV4TWV0YURhdGFLZXk6Ok5hbWUp
IHsKLSAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRF
cnJvcik7CisgICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3IxNCk7CiAgICAgICAgICAgICAvLyBQb3NzaWJsZSBzdGFsZSBtZXRhZGF0YSBkdWUg
dG8gaHR0cDovL3dlYmtpdC5vcmcvYi84NTU1NyBidXQgZG9uJ3QgZmFpbCB0aGUgbG9hZC4KICAg
ICAgICAgICAgIGl0LT5uZXh0KCk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTg0OCwxNCAr
ODc1LDE0IEBAIFZlY3RvcjxJREJJbmRleE1ldGFkYXRhPiBJREJCYWNraW5nU3RvcmU6OmdldElu
ZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90CiAKICAgICAgICAgaXQtPm5leHQoKTsg
Ly8gdW5pcXVlIGZsYWcKICAgICAgICAgaWYgKCFjaGVja0luZGV4QW5kTWV0YURhdGFLZXkoaXQu
Z2V0KCksIHN0b3BLZXksIGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6OlVuaXF1ZSkpIHsKLSAg
ICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7
CisgICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJy
b3IxNSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBib29sIGluZGV4
VW5pcXVlID0gZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQo
KSk7CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8ga2V5UGF0aAogICAgICAgICBpZiAoIWNoZWNr
SW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgSW5kZXhNZXRh
RGF0YUtleTo6S2V5UGF0aCkpIHsKLSAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxl
dmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxNik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBJREJLZXlQYXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKGl0LT52
YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKQEAgLTk5NSw3ICsxMDIyLDcgQEAg
Ym9vbCBJREJCYWNraW5nU3RvcmU6OmZpbmRLZXlJbkluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLAogICAgICAgICBpbnQ2NF90IHZlcnNpb247CiAgICAgICAg
IGNvbnN0IGNoYXIqIHAgPSBkZWNvZGVWYXJJbnQoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZh
bHVlKCkuZW5kKCksIHZlcnNpb24pOwogICAgICAgICBpZiAoIXApIHsKLSAgICAgICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgICAg
ICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxNyk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgZm91bmRFbmNvZGVkUHJp
bWFyeUtleS5hcHBlbmQocCwgaXQtPnZhbHVlKCkuZW5kKCkgLSBwKTsKQEAgLTEyMjgsNyArMTI1
NSw3IEBAIGJvb2wgT2JqZWN0U3RvcmVLZXlDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAg
ICAgT2JqZWN0U3RvcmVEYXRhS2V5IG9iamVjdFN0b3JlRGF0YUtleTsKICAgICBrZXlQb3NpdGlv
biA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZGVjb2RlKGtleVBvc2l0aW9uLCBrZXlMaW1pdCwgJm9i
amVjdFN0b3JlRGF0YUtleSk7CiAgICAgaWYgKCFrZXlQb3NpdGlvbikgewotICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxOCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEyMzcsNyArMTI2NCw3IEBAIGJvb2wgT2JqZWN0U3Rv
cmVLZXlDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgaW50NjRfdCB2ZXJzaW9uOwog
ICAgIGNvbnN0IGNoYXIqIHZhbHVlUG9zaXRpb24gPSBkZWNvZGVWYXJJbnQobV9pdGVyYXRvci0+
dmFsdWUoKS5iZWdpbigpLCBtX2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpLCB2ZXJzaW9uKTsKICAg
ICBpZiAoIXZhbHVlUG9zaXRpb24pIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERC
QmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERC
QmFja2luZ1N0b3JlUmVhZEVycm9yMTkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CkBAIC0xMjg2LDcgKzEzMTMsNyBAQCBib29sIE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1
cnJlbnRSb3coKQogICAgIE9iamVjdFN0b3JlRGF0YUtleSBvYmplY3RTdG9yZURhdGFLZXk7CiAg
ICAga2V5UG9zaXRpb24gPSBPYmplY3RTdG9yZURhdGFLZXk6OmRlY29kZShrZXlQb3NpdGlvbiwg
a2V5TGltaXQsICZvYmplY3RTdG9yZURhdGFLZXkpOwogICAgIGlmICgha2V5UG9zaXRpb24pIHsK
LSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsK
KyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjAp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMjk1LDcgKzEzMjIsNyBAQCBi
b29sIE9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIGludDY0X3Qg
dmVyc2lvbjsKICAgICBjb25zdCBjaGFyKiB2YWx1ZVBvc2l0aW9uID0gZGVjb2RlVmFySW50KG1f
aXRlcmF0b3ItPnZhbHVlKCkuYmVnaW4oKSwgbV9pdGVyYXRvci0+dmFsdWUoKS5lbmQoKSwgdmVy
c2lvbik7CiAgICAgaWYgKCF2YWx1ZVBvc2l0aW9uKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3Io
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgIEludGVybmFsRXJyb3Io
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjIxKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTM1MywxMyArMTM4MCwxMyBAQCBib29sIEluZGV4S2V5Q3Vyc29ySW1w
bDo6bG9hZEN1cnJlbnRSb3coKQogICAgIGludDY0X3QgaW5kZXhEYXRhVmVyc2lvbjsKICAgICBj
b25zdCBjaGFyKiB2YWx1ZVBvc2l0aW9uID0gZGVjb2RlVmFySW50KG1faXRlcmF0b3ItPnZhbHVl
KCkuYmVnaW4oKSwgbV9pdGVyYXRvci0+dmFsdWUoKS5lbmQoKSwgaW5kZXhEYXRhVmVyc2lvbik7
CiAgICAgaWYgKCF2YWx1ZVBvc2l0aW9uKSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjIyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIHZhbHVlUG9zaXRpb24gPSBkZWNvZGVJREJLZXkodmFsdWVQb3NpdGlvbiwgbV9p
dGVyYXRvci0+dmFsdWUoKS5lbmQoKSwgbV9wcmltYXJ5S2V5KTsKICAgICBpZiAoIXZhbHVlUG9z
aXRpb24pIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVh
ZEVycm9yKTsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVh
ZEVycm9yMjMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzc0LDcgKzE0
MDEsNyBAQCBib29sIEluZGV4S2V5Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIGlu
dDY0X3Qgb2JqZWN0U3RvcmVEYXRhVmVyc2lvbjsKICAgICBjb25zdCBjaGFyKiB0ID0gZGVjb2Rl
VmFySW50KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIG9iamVjdFN0b3JlRGF0YVZlcnNp
b24pOwogICAgIGlmICghdCkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNr
aW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNr
aW5nU3RvcmVSZWFkRXJyb3IyNCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTE0MzksMTIgKzE0NjYsMTIgQEAgYm9vbCBJbmRleEN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93
KCkKICAgICBpbnQ2NF90IGluZGV4RGF0YVZlcnNpb247CiAgICAgdmFsdWVQb3NpdGlvbiA9IGRl
Y29kZVZhckludCh2YWx1ZVBvc2l0aW9uLCB2YWx1ZUxpbWl0LCBpbmRleERhdGFWZXJzaW9uKTsK
ICAgICBpZiAoIXZhbHVlUG9zaXRpb24pIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZl
bERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZl
bERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIHZhbHVlUG9zaXRpb24gPSBkZWNvZGVJREJLZXkodmFsdWVQb3NpdGlvbiwgdmFsdWVM
aW1pdCwgbV9wcmltYXJ5S2V5KTsKICAgICBpZiAoIXZhbHVlUG9zaXRpb24pIHsKLSAgICAgICAg
SW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAg
SW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjYpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNDU5LDcgKzE0ODYsNyBAQCBib29sIEluZGV4
Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIGludDY0X3Qgb2JqZWN0U3RvcmVEYXRh
VmVyc2lvbjsKICAgICBjb25zdCBjaGFyKiB0ID0gZGVjb2RlVmFySW50KHJlc3VsdC5iZWdpbigp
LCByZXN1bHQuZW5kKCksIG9iamVjdFN0b3JlRGF0YVZlcnNpb24pOwogICAgIGlmICghdCkgewot
ICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOwor
ICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IyNyk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177007</attachid>
            <date>2012-11-30 12:22:50 -0800</date>
            <delta_ts>2012-12-03 15:00:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103688-20121130122021.patch</filename>
            <type>text/plain</type>
            <size>14180</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNjMjI1ZjU1ZDNiNGMy
MTkwZWY2OWM1N2I4YjdiNWM0MGY2NWRmZS4uMDkwMGUwOTIwNzQyOTRmODFiYThiMTQyOTU5YjZi
NjgzYjI2ODc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTI5ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEVh
Y2ggcGxhY2Ugb2YgZmFpbHVyZSBzaG91bGQgaGF2ZSBpdHMgb3duIGhpc3RvZ3JhbSBlbnRyeQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNjg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2l2ZSBlYWNo
IEludGVybmFsRXJyb3IoUmVhZEVycm9yKSBsaW5lIGl0cyBvd24gZW51bSBlbnRyeS4gSWYgdGhl
CisgICAgICAgIGRpc3RyaWJ1dGlvbiBvZiBlcnJvciBzb3VyY2VzIGlzbid0IHdoYXQgd2UnZCBl
eHBlY3QgaXQgbWF5IHBvaW50IHRvCisgICAgICAgIGEgbG9naWMgZXJyb3IuCisKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0VXBNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6Omdl
dElEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
OjpnZXRPYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpn
ZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpnZXRLZXlHZW5l
cmF0b3JDdXJyZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6
a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmdldEluZGV4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlOjpmaW5k
S2V5SW5JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpPYmplY3RTdG9yZUtleUN1cnNvckltcGw6
OmxvYWRDdXJyZW50Um93KToKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVjdFN0b3JlQ3Vyc29ySW1w
bDo6bG9hZEN1cnJlbnRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5kZXhLZXlDdXJzb3JJbXBs
Ojpsb2FkQ3VycmVudFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmRleEN1cnNvckltcGw6Omxv
YWRDdXJyZW50Um93KToKKwogMjAxMi0xMS0zMCAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG1p
Y2hlbGFuZ2Vsb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MgU2hhZGVyc10gQ2xhbXAgaW5w
dXQgY29sb3JzIGJlZm9yZSBibGVuZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNjEyNTNmYTAxNGIyNGRiYTk1
NjkwYTU0N2Q5OTcxNGNkZjZmMzg1OC4uYjgwYWFiZTZjMWYxZTY5ODc0ZjNjNTZkNWUyYWY0ZmY2
YThjMDg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuY3BwCkBAIC01Miw5ICs1MiwzNiBAQCB1c2luZyBuYW1lc3BhY2UgSURC
TGV2ZWxEQkNvZGluZzsKIGNvbnN0IGludDY0X3QgS2V5R2VuZXJhdG9ySW5pdGlhbE51bWJlciA9
IDE7IC8vIEZyb20gdGhlIEluZGV4ZWREQiBzcGVjaWZpY2F0aW9uLgogCiBlbnVtIElEQkxldmVs
REJCYWNraW5nU3RvcmVJbnRlcm5hbEVycm9yVHlwZSB7Ci0gICAgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVJlYWRFcnJvciwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMCwKICAg
ICBJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvciwKICAgICBJREJMZXZlbERCQmFja2lu
Z1N0b3JlQ29uc2lzdGVuY3lFcnJvciwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVy
cm9yMSwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMiwKKyAgICBJREJMZXZl
bERCQmFja2luZ1N0b3JlUmVhZEVycm9yMywKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVh
ZEVycm9yNCwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yNSwKKyAgICBJREJM
ZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yNiwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3Jl
UmVhZEVycm9yNywKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yOCwKKyAgICBJ
REJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yOSwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0
b3JlUmVhZEVycm9yMTAsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjExLAor
ICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxMiwKKyAgICBJREJMZXZlbERCQmFj
a2luZ1N0b3JlUmVhZEVycm9yMTMsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJv
cjE0LAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxNSwKKyAgICBJREJMZXZl
bERCQmFja2luZ1N0b3JlUmVhZEVycm9yMTYsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJl
YWRFcnJvcjE3LAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxOCwKKyAgICBJ
REJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMTksCisgICAgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVJlYWRFcnJvcjIwLAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IyMSwK
KyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjIsCisgICAgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVJlYWRFcnJvcjIzLAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJy
b3IyNCwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjUsCisgICAgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjI2LAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3IyNywKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJvck1heCwK
IH07CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFj
a2luZ1N0b3JlSW50ZXJuYWxFcnJvclR5cGUgdHlwZSkKQEAgLTE5OCw3ICsyMjUsNyBAQCBzdGF0
aWMgYm9vbCBzZXRVcE1ldGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luKQogICAgICAgICAgICAgZm9yIChpdC0+c2VlayhzdGFydEtleSk7IGl0LT5pc1ZhbGlk
KCkgJiYgY29tcGFyZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpIHsK
ICAgICAgICAgICAgICAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSAwOwogICAgICAgICAgICAgICAg
IGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLmdldCgpLCBpdC0+a2V5KCksIGRhdGFiYXNlSWQpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZVJlYWRFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZVJlYWRFcnJvcjEpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBpbnRW
ZXJzaW9uS2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFi
YXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKTsKQEAgLTM2MiwxMyArMzg5LDEzIEBAIGJv
b2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgSURCRGF0YWJhc2VNZXRhCiAKICAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgpLCBE
YXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRh
S2V5OjpVc2VyVmVyc2lvbiksIG1ldGFkYXRhLT52ZXJzaW9uKTsKICAgICBpZiAoIW9rKSB7Ci0g
ICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7Cisg
ICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgb2sgPSBnZXRWYXJJbnQobV9kYi5n
ZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBtZXRhZGF0YS0+aW50VmVyc2lvbik7CiAgICAg
aWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3IzKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAobWV0YWRh
dGEtPmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24p
CkBAIC00OTQsNyArNTIxLDcgQEAgVmVjdG9yPElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IElEQkJh
Y2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2UKICAgICAgICAgcCA9
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmRlY29kZShwLCBsaW1pdCwgJm1ldGFEYXRhS2V5KTsK
ICAgICAgICAgQVNTRVJUKHApOwogICAgICAgICBpZiAobWV0YURhdGFLZXkubWV0YURhdGFUeXBl
KCkgIT0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TmFtZSkgewotICAgICAgICAgICAgSW50ZXJu
YWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjQpOwogICAgICAgICAg
ICAgLy8gUG9zc2libGUgc3RhbGUgbWV0YWRhdGEsIGJ1dCBkb24ndCBmYWlsIHRoZSBsb2FkLgog
ICAgICAgICAgICAgaXQtPm5leHQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTA3LDMz
ICs1MzQsMzMgQEAgVmVjdG9yPElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IElEQkJhY2tpbmdTdG9y
ZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2UKIAogICAgICAgICBpdC0+bmV4dCgp
OwogICAgICAgICBpZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCks
IHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OktleVBhdGgp
KSB7Ci0gICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFk
RXJyb3IpOworICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
UmVhZEVycm9yNSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBJREJL
ZXlQYXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0
LT52YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgpOwogICAgICAgICBpZiAoIWNo
ZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0
b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OkF1dG9JbmNyZW1lbnQpKSB7Ci0gICAgICAg
ICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAg
ICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yNik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBib29sIGF1dG9JbmNyZW1l
bnQgPSBkZWNvZGVCb29sKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsK
IAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBJcyBldmljYXRibGUuCiAgICAgICAgIGlmICghY2hl
Y2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3Rv
cmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6RXZpY3RhYmxlKSkgewotICAgICAgICAgICAg
SW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAg
ICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjcpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBMYXN0
IHZlcnNpb24uCiAgICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShp
dC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6
TGFzdFZlcnNpb24pKSB7Ci0gICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNr
aW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERC
QmFja2luZ1N0b3JlUmVhZEVycm9yOCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
CiAgICAgICAgIGl0LT5uZXh0KCk7IC8vIE1heGltdW0gaW5kZXggaWQgYWxsb2NhdGVkLgogICAg
ICAgICBpZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BL
ZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4SWQpKSB7
Ci0gICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJy
b3IpOworICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVh
ZEVycm9yOSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpbnQ2NF90
IG1heEluZGV4SWQgPSBkZWNvZGVJbnQoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCku
ZW5kKCkpOwpAQCAtNTQ2LDcgKzU3Myw3IEBAIFZlY3RvcjxJREJPYmplY3RTdG9yZU1ldGFkYXRh
PiBJREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlCiAgICAg
ICAgICAgICAvLyAoMikgTGF0ZXIsIG51bGwgdnMuIHN0cmluZyB2cy4gYXJyYXkgd2FzIHN0b3Jl
ZCBpbiB0aGUga2V5UGF0aCBpdHNlbGYuCiAgICAgICAgICAgICAvLyBTbyB0aGlzIGNoZWNrIGlz
IG9ubHkgcmVsZXZhbnQgZm9yIHN0cmluZy10eXBlIGtleVBhdGhzLgogICAgICAgICAgICAgaWYg
KCFoYXNLZXlQYXRoICYmIChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBl
ICYmICFrZXlQYXRoLnN0cmluZygpLmlzRW1wdHkoKSkpIHsKLSAgICAgICAgICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICAgICAg
ICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjEwKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghaGFz
S2V5UGF0aCkKQEAgLTY0Miw3ICs2NjksNyBAQCBTdHJpbmcgSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludAogICAg
IGludDY0X3QgdmVyc2lvbjsKICAgICBjb25zdCBjaGFyKiBwID0gZGVjb2RlVmFySW50KGRhdGEu
YmVnaW4oKSwgZGF0YS5lbmQoKSwgdmVyc2lvbik7CiAgICAgaWYgKCFwKSB7Ci0gICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjExKTsKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICAodm9pZCkgdmVyc2lvbjsKQEAgLTcyMyw3ICs3
NTAsNyBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJl
cihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKgogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsK
ICAgICBib29sIG9rID0gbGV2ZWxEQlRyYW5zYWN0aW9uLT5zYWZlR2V0KGtleUdlbmVyYXRvckN1
cnJlbnROdW1iZXJLZXksIGRhdGEsIGZvdW5kKTsKICAgICBpZiAoIW9rKSB7Ci0gICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjEyKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoZm91bmQpCkBAIC03ODcsNyArODE0LDcgQEAg
Ym9vbCBJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiogdHJhbnMKIAogICAgIGJvb2wgb2sgPSBsZXZlbERCVHJhbnNhY3Rp
b24tPnNhZmVHZXQobGV2ZWxkYktleSwgZGF0YSwgZm91bmQpOwogICAgIGlmICghb2spIHsKLSAg
ICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAg
ICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMTMpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmICghZm91bmQpCkBAIC04MzYsNyAr
ODYzLDcgQEAgVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+IElEQkJhY2tpbmdTdG9yZTo6Z2V0SW5k
ZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3QKICAgICAgICAgcCA9IEluZGV4TWV0YURh
dGFLZXk6OmRlY29kZShwLCBsaW1pdCwgJm1ldGFEYXRhS2V5KTsKICAgICAgICAgQVNTRVJUKHAp
OwogICAgICAgICBpZiAobWV0YURhdGFLZXkubWV0YURhdGFUeXBlKCkgIT0gSW5kZXhNZXRhRGF0
YUtleTo6TmFtZSkgewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2lu
Z1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVJlYWRFcnJvcjE0KTsKICAgICAgICAgICAgIC8vIFBvc3NpYmxlIHN0YWxlIG1l
dGFkYXRhIGR1ZSB0byBodHRwOi8vd2Via2l0Lm9yZy9iLzg1NTU3IGJ1dCBkb24ndCBmYWlsIHRo
ZSBsb2FkLgogICAgICAgICAgICAgaXQtPm5leHQoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtODQ4LDE0ICs4NzUsMTQgQEAgVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+IElEQkJhY2tpbmdT
dG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3QKIAogICAgICAgICBp
dC0+bmV4dCgpOyAvLyB1bmlxdWUgZmxhZwogICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRh
RGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6VW5p
cXVlKSkgewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
UmVhZEVycm9yKTsKKyAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVJlYWRFcnJvcjE1KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJvb2wgaW5kZXhVbmlxdWUgPSBkZWNvZGVCb29sKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52
YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBrZXlQYXRoCiAgICAgICAg
IGlmICghY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0LmdldCgpLCBzdG9wS2V5LCBpbmRleElk
LCBJbmRleE1ldGFEYXRhS2V5OjpLZXlQYXRoKSkgewotICAgICAgICAgICAgSW50ZXJuYWxFcnJv
cihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgICAgIEludGVybmFs
RXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjE2KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIElEQktleVBhdGgga2V5UGF0aCA9IGRlY29kZUlEQktl
eVBhdGgoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwpAQCAtOTk1LDcg
KzEwMjIsNyBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sCiAgICAgICAgIGludDY0X3QgdmVyc2lv
bjsKICAgICAgICAgY29uc3QgY2hhciogcCA9IGRlY29kZVZhckludChpdC0+dmFsdWUoKS5iZWdp
bigpLCBpdC0+dmFsdWUoKS5lbmQoKSwgdmVyc2lvbik7CiAgICAgICAgIGlmICghcCkgewotICAg
ICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsK
KyAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJv
cjE3KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBmb3Vu
ZEVuY29kZWRQcmltYXJ5S2V5LmFwcGVuZChwLCBpdC0+dmFsdWUoKS5lbmQoKSAtIHApOwpAQCAt
MTIyOCw3ICsxMjU1LDcgQEAgYm9vbCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJy
ZW50Um93KCkKICAgICBPYmplY3RTdG9yZURhdGFLZXkgb2JqZWN0U3RvcmVEYXRhS2V5OwogICAg
IGtleVBvc2l0aW9uID0gT2JqZWN0U3RvcmVEYXRhS2V5OjpkZWNvZGUoa2V5UG9zaXRpb24sIGtl
eUxpbWl0LCAmb2JqZWN0U3RvcmVEYXRhS2V5KTsKICAgICBpZiAoIWtleVBvc2l0aW9uKSB7Ci0g
ICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7Cisg
ICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjE4KTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTIzNyw3ICsxMjY0LDcgQEAgYm9v
bCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKICAgICBpbnQ2NF90
IHZlcnNpb247CiAgICAgY29uc3QgY2hhciogdmFsdWVQb3NpdGlvbiA9IGRlY29kZVZhckludCht
X2l0ZXJhdG9yLT52YWx1ZSgpLmJlZ2luKCksIG1faXRlcmF0b3ItPnZhbHVlKCkuZW5kKCksIHZl
cnNpb24pOwogICAgIGlmICghdmFsdWVQb3NpdGlvbikgewotICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IxOSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTEyODYsNyArMTMxMyw3IEBAIGJvb2wgT2JqZWN0U3RvcmVDdXJzb3JJ
bXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgT2JqZWN0U3RvcmVEYXRhS2V5IG9iamVjdFN0b3Jl
RGF0YUtleTsKICAgICBrZXlQb3NpdGlvbiA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZGVjb2RlKGtl
eVBvc2l0aW9uLCBrZXlMaW1pdCwgJm9iamVjdFN0b3JlRGF0YUtleSk7CiAgICAgaWYgKCFrZXlQ
b3NpdGlvbikgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3IyMCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEyOTUsNyAr
MTMyMiw3IEBAIGJvb2wgT2JqZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAg
ICAgaW50NjRfdCB2ZXJzaW9uOwogICAgIGNvbnN0IGNoYXIqIHZhbHVlUG9zaXRpb24gPSBkZWNv
ZGVWYXJJbnQobV9pdGVyYXRvci0+dmFsdWUoKS5iZWdpbigpLCBtX2l0ZXJhdG9yLT52YWx1ZSgp
LmVuZCgpLCB2ZXJzaW9uKTsKICAgICBpZiAoIXZhbHVlUG9zaXRpb24pIHsKLSAgICAgICAgSW50
ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgSW50
ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjEpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzUzLDEzICsxMzgwLDEzIEBAIGJvb2wgSW5kZXhL
ZXlDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgaW50NjRfdCBpbmRleERhdGFWZXJz
aW9uOwogICAgIGNvbnN0IGNoYXIqIHZhbHVlUG9zaXRpb24gPSBkZWNvZGVWYXJJbnQobV9pdGVy
YXRvci0+dmFsdWUoKS5iZWdpbigpLCBtX2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpLCBpbmRleERh
dGFWZXJzaW9uKTsKICAgICBpZiAoIXZhbHVlUG9zaXRpb24pIHsKLSAgICAgICAgSW50ZXJuYWxF
cnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgSW50ZXJuYWxF
cnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yMjIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgdmFsdWVQb3NpdGlvbiA9IGRlY29kZUlEQktleSh2YWx1ZVBv
c2l0aW9uLCBtX2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpLCBtX3ByaW1hcnlLZXkpOwogICAgIGlm
ICghdmFsdWVQb3NpdGlvbikgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNr
aW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNr
aW5nU3RvcmVSZWFkRXJyb3IyMyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTEzNzQsNyArMTQwMSw3IEBAIGJvb2wgSW5kZXhLZXlDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJv
dygpCiAgICAgaW50NjRfdCBvYmplY3RTdG9yZURhdGFWZXJzaW9uOwogICAgIGNvbnN0IGNoYXIq
IHQgPSBkZWNvZGVWYXJJbnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgb2JqZWN0U3Rv
cmVEYXRhVmVyc2lvbik7CiAgICAgaWYgKCF0KSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgIEludGVybmFsRXJyb3IoSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcjI0KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMTQzOSwxMiArMTQ2NiwxMiBAQCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9h
ZEN1cnJlbnRSb3coKQogICAgIGludDY0X3QgaW5kZXhEYXRhVmVyc2lvbjsKICAgICB2YWx1ZVBv
c2l0aW9uID0gZGVjb2RlVmFySW50KHZhbHVlUG9zaXRpb24sIHZhbHVlTGltaXQsIGluZGV4RGF0
YVZlcnNpb24pOwogICAgIGlmICghdmFsdWVQb3NpdGlvbikgewotICAgICAgICBJbnRlcm5hbEVy
cm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVy
cm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IyNSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgdmFsdWVQb3NpdGlvbiA9IGRlY29kZUlEQktleSh2YWx1ZVBvc2l0
aW9uLCB2YWx1ZUxpbWl0LCBtX3ByaW1hcnlLZXkpOwogICAgIGlmICghdmFsdWVQb3NpdGlvbikg
ewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3Ip
OworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3Iy
Nik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE0NTksNyArMTQ4Niw3IEBA
IGJvb2wgSW5kZXhDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgaW50NjRfdCBvYmpl
Y3RTdG9yZURhdGFWZXJzaW9uOwogICAgIGNvbnN0IGNoYXIqIHQgPSBkZWNvZGVWYXJJbnQocmVz
dWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgb2JqZWN0U3RvcmVEYXRhVmVyc2lvbik7CiAgICAg
aWYgKCF0KSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJl
YWRFcnJvcik7CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJl
YWRFcnJvcjI3KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177340</attachid>
            <date>2012-12-03 15:00:23 -0800</date>
            <delta_ts>2012-12-04 03:05:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103688-20121203145750.patch</filename>
            <type>text/plain</type>
            <size>13676</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg0YjBmY2RhODlmN2U5
ZDUyZGRhNzRkZmRjYTQxMzhkNjJmNzhmYi4uYWI4N2FmYTczM2M2MTJiMDk2ZmY3OWJmMmU0YjMw
MjI4Y2Y0NWJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTAzICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IE1h
a2UgbGV2ZWxkYiBoaXN0b2dyYW0gZW50cmllcyBtb3JlIGZpbmUtZ3JhaW5lZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNjg4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgdXMgYmV0dGVyIGlu
c2lnaHQgaW50byB3aGljaCBmdW5jdGlvbnMgdGhlIElPIGVycm9ycyBvcmlnaW5hdGUKKyAgICAg
ICAgZnJvbS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRVcE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNr
aW5nU3RvcmU6OmdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJCYWNraW5nU3RvcmU6OmZpbmRLZXlJbkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Ok9iamVj
dFN0b3JlS2V5Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3cpOgorICAgICAgICAoV2ViQ29yZTo6
T2JqZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmRleEtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KToKKyAgICAgICAgKFdlYkNvcmU6
OkluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3cpOgorCiAyMDEyLTEyLTAzICBGbG9yaW4g
TWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1NraWFdIERlZmVycmVk
IFNrQ2FudmFzIHNhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNjEyNTNmYTAxNGIyNGRiYTk1NjkwYTU0N2Q5
OTcxNGNkZjZmMzg1OC4uZjc0NTViODc4MDUzOWQxYTgzNDU2NDIxNzAxNTQxZTE2OGE0MmViMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5n
U3RvcmUuY3BwCkBAIC01NSw2ICs1NSwxNSBAQCBlbnVtIElEQkxldmVsREJCYWNraW5nU3RvcmVJ
bnRlcm5hbEVycm9yVHlwZSB7CiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvciwK
ICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlV3JpdGVFcnJvciwKICAgICBJREJMZXZlbERCQmFj
a2luZ1N0b3JlQ29uc2lzdGVuY3lFcnJvciwKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVh
ZEVycm9yRmluZEtleUluSW5kZXgsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJv
ckdldElEQkRhdGFiYXNlTWV0YURhdGEsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRF
cnJvckdldEluZGV4ZXMsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldEtl
eUdlbmVyYXRvckN1cnJlbnROdW1iZXIsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRF
cnJvckdldE9iamVjdFN0b3JlcywKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9y
R2V0UmVjb3JkLAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JLZXlFeGlzdHNJ
bk9iamVjdFN0b3JlLAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JMb2FkQ3Vy
cmVudFJvdywKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yU2V0dXBNZXRhZGF0
YSwKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJvck1heCwKIH07CiBzdGF0
aWMgaW5saW5lIHZvaWQgcmVjb3JkSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
SW50ZXJuYWxFcnJvclR5cGUgdHlwZSkKQEAgLTE5OCw3ICsyMDcsNyBAQCBzdGF0aWMgYm9vbCBz
ZXRVcE1ldGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQog
ICAgICAgICAgICAgZm9yIChpdC0+c2VlayhzdGFydEtleSk7IGl0LT5pc1ZhbGlkKCkgJiYgY29t
cGFyZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpIHsKICAgICAgICAg
ICAgICAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSAwOwogICAgICAgICAgICAgICAgIGlmICghZ2V0
SW50KHRyYW5zYWN0aW9uLmdldCgpLCBpdC0+a2V5KCksIGRhdGFiYXNlSWQpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJv
cik7CisgICAgICAgICAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVJlYWRFcnJvclNldHVwTWV0YWRhdGEpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBp
bnRWZXJzaW9uS2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERh
dGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKTsKQEAgLTM2MiwxMyArMzcxLDEzIEBA
IGJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhCiAKICAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgp
LCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFE
YXRhS2V5OjpVc2VyVmVyc2lvbiksIG1ldGFkYXRhLT52ZXJzaW9uKTsKICAgICBpZiAoIW9rKSB7
Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7
CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdl
dElEQkRhdGFiYXNlTWV0YURhdGEpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgb2sgPSBnZXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2Rl
KG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBtZXRh
ZGF0YS0+aW50VmVyc2lvbik7CiAgICAgaWYgKCFvaykgewotICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9y
KElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JHZXRJREJEYXRhYmFzZU1ldGFEYXRhKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAobWV0YWRhdGEtPmludFZlcnNp
b24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24pCkBAIC00OTQsNyAr
NTAzLDcgQEAgVmVjdG9yPElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IElEQkJhY2tpbmdTdG9yZTo6
Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2UKICAgICAgICAgcCA9IE9iamVjdFN0b3Jl
TWV0YURhdGFLZXk6OmRlY29kZShwLCBsaW1pdCwgJm1ldGFEYXRhS2V5KTsKICAgICAgICAgQVNT
RVJUKHApOwogICAgICAgICBpZiAobWV0YURhdGFLZXkubWV0YURhdGFUeXBlKCkgIT0gT2JqZWN0
U3RvcmVNZXRhRGF0YUtleTo6TmFtZSkgewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJM
ZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgICAgIEludGVybmFsRXJyb3Io
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldE9iamVjdFN0b3Jlcyk7CiAgICAgICAg
ICAgICAvLyBQb3NzaWJsZSBzdGFsZSBtZXRhZGF0YSwgYnV0IGRvbid0IGZhaWwgdGhlIGxvYWQu
CiAgICAgICAgICAgICBpdC0+bmV4dCgpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC01MDcs
MzMgKzUxNiwzMyBAQCBWZWN0b3I8SURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gSURCQmFja2luZ1N0
b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZQogCiAgICAgICAgIGl0LT5uZXh0
KCk7CiAgICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQo
KSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6S2V5UGF0
aCkpIHsKLSAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJl
YWRFcnJvcik7CisgICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3Rv
cmVSZWFkRXJyb3JHZXRPYmplY3RTdG9yZXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRoID0gZGVjb2RlSURCS2V5UGF0aChpdC0+dmFs
dWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKICAgICAgICAgaXQtPm5leHQoKTsK
ICAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBz
dG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpBdXRvSW5jcmVt
ZW50KSkgewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
UmVhZEVycm9yKTsKKyAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVJlYWRFcnJvckdldE9iamVjdFN0b3Jlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBib29sIGF1dG9JbmNyZW1lbnQgPSBkZWNvZGVCb29sKGl0LT52YWx1ZSgp
LmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBJ
cyBldmljYXRibGUuCiAgICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlw
ZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtl
eTo6RXZpY3RhYmxlKSkgewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFj
a2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldE9iamVjdFN0b3Jlcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCiAgICAgICAgIGl0LT5uZXh0KCk7IC8vIExhc3QgdmVyc2lvbi4KICAg
ICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9w
S2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpMYXN0VmVyc2lvbikp
IHsKLSAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRF
cnJvcik7CisgICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3JHZXRPYmplY3RTdG9yZXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBNYXhpbXVtIGluZGV4IGlkIGFsbG9jYXRlZC4KICAg
ICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9w
S2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpNYXhJbmRleElkKSkg
ewotICAgICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVy
cm9yKTsKKyAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJl
YWRFcnJvckdldE9iamVjdFN0b3Jlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBpbnQ2NF90IG1heEluZGV4SWQgPSBkZWNvZGVJbnQoaXQtPnZhbHVlKCkuYmVnaW4o
KSwgaXQtPnZhbHVlKCkuZW5kKCkpOwpAQCAtNTQ2LDcgKzU1NSw3IEBAIFZlY3RvcjxJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhPiBJREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90
IGRhdGFiYXNlCiAgICAgICAgICAgICAvLyAoMikgTGF0ZXIsIG51bGwgdnMuIHN0cmluZyB2cy4g
YXJyYXkgd2FzIHN0b3JlZCBpbiB0aGUga2V5UGF0aCBpdHNlbGYuCiAgICAgICAgICAgICAvLyBT
byB0aGlzIGNoZWNrIGlzIG9ubHkgcmVsZXZhbnQgZm9yIHN0cmluZy10eXBlIGtleVBhdGhzLgog
ICAgICAgICAgICAgaWYgKCFoYXNLZXlQYXRoICYmIChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQ
YXRoOjpTdHJpbmdUeXBlICYmICFrZXlQYXRoLnN0cmluZygpLmlzRW1wdHkoKSkpIHsKLSAgICAg
ICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3Ip
OworICAgICAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJl
YWRFcnJvckdldE9iamVjdFN0b3Jlcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0tleVBhdGgpCkBAIC02NDIsNyArNjUxLDcgQEAg
U3RyaW5nIElEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQKICAgICBpbnQ2NF90IHZlcnNpb247CiAgICAgY29uc3Qg
Y2hhciogcCA9IGRlY29kZVZhckludChkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCksIHZlcnNpb24p
OwogICAgIGlmICghcCkgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5n
U3RvcmVSZWFkRXJyb3JHZXRSZWNvcmQpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
fQogICAgICh2b2lkKSB2ZXJzaW9uOwpAQCAtNzIzLDcgKzczMiw3IEBAIGJvb2wgSURCQmFja2lu
Z1N0b3JlOjpnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qCiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgIGJvb2wgb2sgPSBsZXZlbERC
VHJhbnNhY3Rpb24tPnNhZmVHZXQoa2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSwgZGF0YSwg
Zm91bmQpOwogICAgIGlmICghb2spIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERC
QmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERC
QmFja2luZ1N0b3JlUmVhZEVycm9yR2V0S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGZvdW5kKQpAQCAtNzg3LDcgKzc5Niw3
IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zCiAKICAgICBib29sIG9rID0gbGV2ZWxEQlRyYW5z
YWN0aW9uLT5zYWZlR2V0KGxldmVsZGJLZXksIGRhdGEsIGZvdW5kKTsKICAgICBpZiAoIW9rKSB7
Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7
CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcktl
eUV4aXN0c0luT2JqZWN0U3RvcmUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IGlmICghZm91bmQpCkBAIC04MzYsNyArODQ1LDcgQEAgVmVjdG9yPElEQkluZGV4TWV0YWRhdGE+
IElEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3QK
ICAgICAgICAgcCA9IEluZGV4TWV0YURhdGFLZXk6OmRlY29kZShwLCBsaW1pdCwgJm1ldGFEYXRh
S2V5KTsKICAgICAgICAgQVNTRVJUKHApOwogICAgICAgICBpZiAobWV0YURhdGFLZXkubWV0YURh
dGFUeXBlKCkgIT0gSW5kZXhNZXRhRGF0YUtleTo6TmFtZSkgewotICAgICAgICAgICAgSW50ZXJu
YWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgICAgIElu
dGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldEluZGV4ZXMpOwog
ICAgICAgICAgICAgLy8gUG9zc2libGUgc3RhbGUgbWV0YWRhdGEgZHVlIHRvIGh0dHA6Ly93ZWJr
aXQub3JnL2IvODU1NTcgYnV0IGRvbid0IGZhaWwgdGhlIGxvYWQuCiAgICAgICAgICAgICBpdC0+
bmV4dCgpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC04NDgsMTQgKzg1NywxNCBAQCBWZWN0
b3I8SURCSW5kZXhNZXRhZGF0YT4gSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdAogCiAgICAgICAgIGl0LT5uZXh0KCk7IC8vIHVuaXF1ZSBmbGFn
CiAgICAgICAgIGlmICghY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0LmdldCgpLCBzdG9wS2V5
LCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjpVbmlxdWUpKSB7Ci0gICAgICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICAgICAg
SW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yR2V0SW5kZXhlcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBib29sIGluZGV4VW5pcXVl
ID0gZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAK
ICAgICAgICAgaXQtPm5leHQoKTsgLy8ga2V5UGF0aAogICAgICAgICBpZiAoIWNoZWNrSW5kZXhB
bmRNZXRhRGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtl
eTo6S2V5UGF0aCkpIHsKLSAgICAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJC
YWNraW5nU3RvcmVSZWFkRXJyb3JHZXRJbmRleGVzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIElEQktleVBhdGgga2V5UGF0aCA9IGRlY29kZUlEQktleVBhdGgoaXQt
PnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwpAQCAtOTk1LDcgKzEwMDQsNyBA
QCBib29sIElEQkJhY2tpbmdTdG9yZTo6ZmluZEtleUluSW5kZXgoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sCiAgICAgICAgIGludDY0X3QgdmVyc2lvbjsKICAgICAg
ICAgY29uc3QgY2hhciogcCA9IGRlY29kZVZhckludChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+
dmFsdWUoKS5lbmQoKSwgdmVyc2lvbik7CiAgICAgICAgIGlmICghcCkgewotICAgICAgICAgICAg
SW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAg
ICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckZpbmRLZXlJ
bkluZGV4KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBm
b3VuZEVuY29kZWRQcmltYXJ5S2V5LmFwcGVuZChwLCBpdC0+dmFsdWUoKS5lbmQoKSAtIHApOwpA
QCAtMTIyOCw3ICsxMjM3LDcgQEAgYm9vbCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRD
dXJyZW50Um93KCkKICAgICBPYmplY3RTdG9yZURhdGFLZXkgb2JqZWN0U3RvcmVEYXRhS2V5Owog
ICAgIGtleVBvc2l0aW9uID0gT2JqZWN0U3RvcmVEYXRhS2V5OjpkZWNvZGUoa2V5UG9zaXRpb24s
IGtleUxpbWl0LCAmb2JqZWN0U3RvcmVEYXRhS2V5KTsKICAgICBpZiAoIWtleVBvc2l0aW9uKSB7
Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7
CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckxv
YWRDdXJyZW50Um93KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTIzNyw3
ICsxMjQ2LDcgQEAgYm9vbCBPYmplY3RTdG9yZUtleUN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93
KCkKICAgICBpbnQ2NF90IHZlcnNpb247CiAgICAgY29uc3QgY2hhciogdmFsdWVQb3NpdGlvbiA9
IGRlY29kZVZhckludChtX2l0ZXJhdG9yLT52YWx1ZSgpLmJlZ2luKCksIG1faXRlcmF0b3ItPnZh
bHVlKCkuZW5kKCksIHZlcnNpb24pOwogICAgIGlmICghdmFsdWVQb3NpdGlvbikgewotICAgICAg
ICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAg
ICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JMb2FkQ3VycmVu
dFJvdyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEyODYsNyArMTI5NSw3
IEBAIGJvb2wgT2JqZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgT2Jq
ZWN0U3RvcmVEYXRhS2V5IG9iamVjdFN0b3JlRGF0YUtleTsKICAgICBrZXlQb3NpdGlvbiA9IE9i
amVjdFN0b3JlRGF0YUtleTo6ZGVjb2RlKGtleVBvc2l0aW9uLCBrZXlMaW1pdCwgJm9iamVjdFN0
b3JlRGF0YUtleSk7CiAgICAgaWYgKCFrZXlQb3NpdGlvbikgewotICAgICAgICBJbnRlcm5hbEVy
cm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVy
cm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JMb2FkQ3VycmVudFJvdyk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEyOTUsNyArMTMwNCw3IEBAIGJvb2wgT2Jq
ZWN0U3RvcmVDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgaW50NjRfdCB2ZXJzaW9u
OwogICAgIGNvbnN0IGNoYXIqIHZhbHVlUG9zaXRpb24gPSBkZWNvZGVWYXJJbnQobV9pdGVyYXRv
ci0+dmFsdWUoKS5iZWdpbigpLCBtX2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpLCB2ZXJzaW9uKTsK
ICAgICBpZiAoIXZhbHVlUG9zaXRpb24pIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZl
bERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZl
bERCQmFja2luZ1N0b3JlUmVhZEVycm9yTG9hZEN1cnJlbnRSb3cpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0xMzUzLDEzICsxMzYyLDEzIEBAIGJvb2wgSW5kZXhLZXlDdXJz
b3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgaW50NjRfdCBpbmRleERhdGFWZXJzaW9uOwog
ICAgIGNvbnN0IGNoYXIqIHZhbHVlUG9zaXRpb24gPSBkZWNvZGVWYXJJbnQobV9pdGVyYXRvci0+
dmFsdWUoKS5iZWdpbigpLCBtX2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpLCBpbmRleERhdGFWZXJz
aW9uKTsKICAgICBpZiAoIXZhbHVlUG9zaXRpb24pIHsKLSAgICAgICAgSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yKTsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yTG9hZEN1cnJlbnRSb3cpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgdmFsdWVQb3NpdGlvbiA9IGRlY29kZUlEQktleSh2
YWx1ZVBvc2l0aW9uLCBtX2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpLCBtX3ByaW1hcnlLZXkpOwog
ICAgIGlmICghdmFsdWVQb3NpdGlvbikgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVs
REJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVs
REJCYWNraW5nU3RvcmVSZWFkRXJyb3JMb2FkQ3VycmVudFJvdyk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTEzNzQsNyArMTM4Myw3IEBAIGJvb2wgSW5kZXhLZXlDdXJzb3JJ
bXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgaW50NjRfdCBvYmplY3RTdG9yZURhdGFWZXJzaW9u
OwogICAgIGNvbnN0IGNoYXIqIHQgPSBkZWNvZGVWYXJJbnQocmVzdWx0LmJlZ2luKCksIHJlc3Vs
dC5lbmQoKSwgb2JqZWN0U3RvcmVEYXRhVmVyc2lvbik7CiAgICAgaWYgKCF0KSB7Ci0gICAgICAg
IEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvcik7CisgICAgICAg
IEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckxvYWRDdXJyZW50
Um93KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTQzOSwxMiArMTQ0OCwx
MiBAQCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIGludDY0X3Qg
aW5kZXhEYXRhVmVyc2lvbjsKICAgICB2YWx1ZVBvc2l0aW9uID0gZGVjb2RlVmFySW50KHZhbHVl
UG9zaXRpb24sIHZhbHVlTGltaXQsIGluZGV4RGF0YVZlcnNpb24pOwogICAgIGlmICghdmFsdWVQ
b3NpdGlvbikgewotICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3IpOworICAgICAgICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3JMb2FkQ3VycmVudFJvdyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgdmFsdWVQb3NpdGlvbiA9IGRlY29kZUlEQktleSh2YWx1ZVBvc2l0aW9uLCB2YWx1ZUxpbWl0
LCBtX3ByaW1hcnlLZXkpOwogICAgIGlmICghdmFsdWVQb3NpdGlvbikgewotICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3IpOworICAgICAgICBJbnRl
cm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JMb2FkQ3VycmVudFJvdyk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE0NTksNyArMTQ2OCw3IEBAIGJv
b2wgSW5kZXhDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiAgICAgaW50NjRfdCBvYmplY3RT
dG9yZURhdGFWZXJzaW9uOwogICAgIGNvbnN0IGNoYXIqIHQgPSBkZWNvZGVWYXJJbnQocmVzdWx0
LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgb2JqZWN0U3RvcmVEYXRhVmVyc2lvbik7CiAgICAgaWYg
KCF0KSB7Ci0gICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRF
cnJvcik7CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRF
cnJvckxvYWRDdXJyZW50Um93KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>