<?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>73220</bug_id>
          
          <creation_ts>2011-11-28 07:47:10 -0800</creation_ts>
          <short_desc>IndexedDB: Fix reverse cursor with non-existent upper bound</short_desc>
          <delta_ts>2011-12-01 03:21:22 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509827</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-28 07:47:10 -0800</bug_when>
    <thetext>IndexedDB: Fix reverse cursor with non-existent upper bound</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509830</commentid>
    <comment_count>1</comment_count>
      <attachid>116759</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-28 07:50:19 -0800</bug_when>
    <thetext>Created attachment 116759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509832</commentid>
    <comment_count>2</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-28 07:51:32 -0800</bug_when>
    <thetext>Please take a look when you have time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509927</commentid>
    <comment_count>3</comment_count>
      <attachid>116759</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-28 10:24:16 -0800</bug_when>
    <thetext>Comment on attachment 116759
Patch

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

&gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:1255
&gt;          cursorOptions.highOpen = true; // Not included.

Would it be more readable as: if (cursorOptions.forward) { ... } else { ... }

&gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:1264
&gt;          cursorOptions.highOpen = range-&gt;upperOpen();

Would it be more readable as: if (cursorOptions.forward) { ... } else { ... }

&gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:1308
&gt;          if (!cursorOptions.forward) { // We need a key that exists.

ditto re: if (cursorOptions.forward) { ... } else { ... }

&gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:1369
&gt; +        // If the target key should not be included, but we end up with a small key, we should include that.

Typo: &quot;small&quot; -&gt; &quot;smaller&quot;

&gt; LayoutTests/storage/indexeddb/cursor-reverse-bug.html:21
&gt; +    evalAndLog(&quot;IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction&quot;);

Include IDBKeyRange = webkitIDBKeyRange here

&gt; LayoutTests/storage/indexeddb/cursor-reverse-bug.html:103
&gt; +    storeReq = evalAndLog(&quot;storeReq = store.openCursor(webkitIDBKeyRange.upperBound(test.upperBound, test.open), IDBCursor.PREV)&quot;);

... and just use IDBKeyRange here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510812</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-29 08:56:02 -0800</bug_when>
    <thetext>Thanks for the review!

(In reply to comment #3)
&gt; (From update of attachment 116759 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116759&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:1255
&gt; &gt;          cursorOptions.highOpen = true; // Not included.
&gt; 
&gt; Would it be more readable as: if (cursorOptions.forward) { ... } else { ... }

Done.

&gt; 
&gt; &gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:1264
&gt; &gt;          cursorOptions.highOpen = range-&gt;upperOpen();
&gt; 
&gt; Would it be more readable as: if (cursorOptions.forward) { ... } else { ... }
&gt; 
&gt; &gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:1308
&gt; &gt;          if (!cursorOptions.forward) { // We need a key that exists.
&gt; 
&gt; ditto re: if (cursorOptions.forward) { ... } else { ... }

Hmm, I&apos;m not sure what I&apos;d put in the if-branch in this case?

&gt; 
&gt; &gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:1369
&gt; &gt; +        // If the target key should not be included, but we end up with a small key, we should include that.
&gt; 
&gt; Typo: &quot;small&quot; -&gt; &quot;smaller&quot;

Done.

&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/cursor-reverse-bug.html:21
&gt; &gt; +    evalAndLog(&quot;IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction&quot;);
&gt; 
&gt; Include IDBKeyRange = webkitIDBKeyRange here

Done.

&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/cursor-reverse-bug.html:103
&gt; &gt; +    storeReq = evalAndLog(&quot;storeReq = store.openCursor(webkitIDBKeyRange.upperBound(test.upperBound, test.open), IDBCursor.PREV)&quot;);
&gt; 
&gt; ... and just use IDBKeyRange here

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510813</commentid>
    <comment_count>5</comment_count>
      <attachid>116978</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-29 08:56:30 -0800</bug_when>
    <thetext>Created attachment 116978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512059</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-30 13:10:40 -0800</bug_when>
    <thetext>Josh: do you have any more comments?

Tony: could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512073</commentid>
    <comment_count>7</comment_count>
      <attachid>116978</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-30 13:28:29 -0800</bug_when>
    <thetext>Comment on attachment 116978
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512096</commentid>
    <comment_count>8</comment_count>
      <attachid>116978</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-30 13:47:46 -0800</bug_when>
    <thetext>Comment on attachment 116978
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512665</commentid>
    <comment_count>9</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-12-01 03:21:22 -0800</bug_when>
    <thetext>Committed r101648: &lt;http://trac.webkit.org/changeset/101648&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116759</attachid>
            <date>2011-11-28 07:50:19 -0800</date>
            <delta_ts>2011-11-29 08:56:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73220-20111128155018.patch</filename>
            <type>text/plain</type>
            <size>17880</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M5ZTUyMjhjOTYzZDM4
MTRlODQyNDk3MWQ1NDAzNTFhMDRlNjk1OC4uOWY0MzM1MDViZDRmZjg1NjNlODMzOTBkZTdmNzM0
Y2UwYmZiZWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTI4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBGaXgg
cmV2ZXJzZSBjdXJzb3Igd2l0aCBub24tZXhpc3RlbnQgdXBwZXIgYm91bmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMjIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNvZGUgcHJldmlvdXNseSBk
aWQgbm90IHByb3Blcmx5IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUKKyAgICAgICAgc3BlY2lm
aWVkIHVwcGVyIGJvdW5kIGZvciBhIHJldmVyc2UgY3Vyc29yIGRpZCBub3QgZXhpc3QuCisKKyAg
ICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwKKwor
ICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhDdXJz
b3IpOgorCiAyMDExLTExLTI4ICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IENTUyBib3JkZXIgaW1hZ2UgcHJvcGVydGllcyBp
biBDU1NTdHlsZUFwcGx5UHJvcGVydHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBlYzc1ZDBmYzA2ZDk1ZGVjYWZjNDU5ZGY3
Y2E2MDlhYTY0MGM2ZDRjLi45YjE0N2RhNjFhNjFhN2YwOWZhNGQ0YWQxNjFlYmIzNjhiMDBjNmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTgwMyw3ICs4MDMsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OnB1
dEluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3QgbwogICAgIHJl
dHVybiBtX2N1cnJlbnRUcmFuc2FjdGlvbi0+cHV0KGluZGV4RGF0YUtleSwgZGF0YSk7CiB9CiAK
LXN0YXRpYyBib29sIGZpbmRHcmVhdGVzdEtleUxlc3NUaGFuKExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYgdGFyZ2V0LCBWZWN0b3I8Y2hhcj4mIGZv
dW5kS2V5KQorc3RhdGljIGJvb2wgZmluZEdyZWF0ZXN0S2V5TGVzc1RoYW5PckVxdWFsKExldmVs
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYgdGFyZ2V0LCBW
ZWN0b3I8Y2hhcj4mIGZvdW5kS2V5KQogewogICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0
ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgaXQtPnNlZWsodGFyZ2V0KTsK
QEAgLTgxNCwxNCArODE0LDIwIEBAIHN0YXRpYyBib29sIGZpbmRHcmVhdGVzdEtleUxlc3NUaGFu
KExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgd2hpbGUgKGNvbXBhcmVJbmRleEtleXMoaXQt
PmtleSgpLCB0YXJnZXQpID49IDApIHsKKyAgICB3aGlsZSAoY29tcGFyZUluZGV4S2V5cyhpdC0+
a2V5KCksIHRhcmdldCkgPiAwKSB7CiAgICAgICAgIGl0LT5wcmV2KCk7CiAgICAgICAgIGlmICgh
aXQtPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBm
b3VuZEtleS5jbGVhcigpOwotICAgIGZvdW5kS2V5LmFwcGVuZChpdC0+a2V5KCkuYmVnaW4oKSwg
aXQtPmtleSgpLmVuZCgpIC0gaXQtPmtleSgpLmJlZ2luKCkpOworICAgIGRvIHsKKyAgICAgICAg
Zm91bmRLZXkuY2xlYXIoKTsKKyAgICAgICAgZm91bmRLZXkuYXBwZW5kKGl0LT5rZXkoKS5iZWdp
bigpLCBpdC0+a2V5KCkuZW5kKCkgLSBpdC0+a2V5KCkuYmVnaW4oKSk7CisKKyAgICAgICAgLy8g
VGhlcmUgY2FuIGJlIHNldmVyYWwgaW5kZXgga2V5cyB0aGF0IGNvbXBhcmUgZXF1YWwuIFdlIHdh
bnQgdGhlIGxhc3Qgb25lLgorICAgICAgICBpdC0+bmV4dCgpOworICAgIH0gd2hpbGUgKGl0LT5p
c1ZhbGlkKCkgJiYgIWNvbXBhcmVJbmRleEtleXMoaXQtPmtleSgpLCB0YXJnZXQpKTsKKwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xMjI2LDIzICsxMjMyLDYgQEAgYm9vbCBJbmRleEN1cnNv
ckltcGw6OmxvYWRDdXJyZW50Um93KCkKIAogfQogCi1zdGF0aWMgYm9vbCBmaW5kTGFzdEluZGV4
S2V5RXF1YWxUbyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBWZWN0b3I8
Y2hhcj4mIHRhcmdldCwgVmVjdG9yPGNoYXI+JiBmb3VuZEtleSkKLXsKLSAgICBPd25QdHI8TGV2
ZWxEQkl0ZXJhdG9yPiBpdCA9IHRyYW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRvcigpOwotICAgIGl0
LT5zZWVrKHRhcmdldCk7Ci0KLSAgICBpZiAoIWl0LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHdoaWxlIChpdC0+aXNWYWxpZCgpICYmICFjb21wYXJlSW5kZXhLZXlz
KGl0LT5rZXkoKSwgdGFyZ2V0KSkgewotICAgICAgICBmb3VuZEtleS5jbGVhcigpOwotICAgICAg
ICBmb3VuZEtleS5hcHBlbmQoaXQtPmtleSgpLmJlZ2luKCksIGl0LT5rZXkoKS5lbmQoKSAtIGl0
LT5rZXkoKS5iZWdpbigpKTsKLSAgICAgICAgaXQtPm5leHQoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQogUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1
cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBBU1NFUlQobV9jdXJyZW50VHJhbnNh
Y3Rpb24pOwpAQCAtMTI2NiwxMyArMTI1NSwyNiBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuT2JqZWN0U3RvcmVDdXJzbwog
ICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gdHJ1ZTsgLy8gTm90IGluY2x1ZGVkLgog
CiAgICAgICAgIGlmICghY3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7IC8vIFdlIG5lZWQgYSBrZXkg
dGhhdCBleGlzdHMuCi0gICAgICAgICAgICBpZiAoIWZpbmRHcmVhdGVzdEtleUxlc3NUaGFuKG1f
Y3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBjdXJzb3JPcHRpb25zLmhpZ2hLZXksIGN1cnNvck9w
dGlvbnMuaGlnaEtleSkpCisgICAgICAgICAgICBpZiAoIWZpbmRHcmVhdGVzdEtleUxlc3NUaGFu
T3JFcXVhbChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5
LCBjdXJzb3JPcHRpb25zLmhpZ2hLZXkpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IGZhbHNlOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5ID0gT2JqZWN0U3RvcmVEYXRh
S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgKnJhbmdlLT51cHBlcigpKTsK
ICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IHJhbmdlLT51cHBlck9wZW4oKTsKKwor
ICAgICAgICBpZiAoIWN1cnNvck9wdGlvbnMuZm9yd2FyZCkgeworICAgICAgICAgICAgLy8gRm9y
IHJldmVyc2UgY3Vyc29ycywgd2UgbmVlZCBhIGtleSB0aGF0IGV4aXN0cy4KKyAgICAgICAgICAg
IFZlY3RvcjxjaGFyPiBmb3VuZEhpZ2hLZXk7CisgICAgICAgICAgICBpZiAoIWZpbmRHcmVhdGVz
dEtleUxlc3NUaGFuT3JFcXVhbChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgY3Vyc29yT3B0
aW9ucy5oaWdoS2V5LCBmb3VuZEhpZ2hLZXkpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
CisgICAgICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGtleSBzaG91bGQgbm90IGJlIGluY2x1ZGVk
LCBidXQgd2UgZW5kIHVwIHdpdGggYSBzbWFsbGVyIGtleSwgd2Ugc2hvdWxkIGluY2x1ZGUgdGhh
dC4KKyAgICAgICAgICAgIGlmIChjdXJzb3JPcHRpb25zLmhpZ2hPcGVuICYmIGNvbXBhcmVJbmRl
eEtleXMoZm91bmRIaWdoS2V5LCBjdXJzb3JPcHRpb25zLmhpZ2hLZXkpIDwgMCkKKyAgICAgICAg
ICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gZmFsc2U7CisKKyAgICAgICAgICAgIGN1
cnNvck9wdGlvbnMuaGlnaEtleSA9IGZvdW5kSGlnaEtleTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIFJlZlB0cjxPYmplY3RTdG9yZUN1cnNvckltcGw+IGN1cnNvciA9IE9iamVjdFN0b3JlQ3Vy
c29ySW1wbDo6Y3JlYXRlKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBjdXJzb3JPcHRpb25z
KTsKQEAgLTEzMDQsMTUgKzEzMDYsMjMgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1
cnNvcj4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbkluZGV4S2V5Q3Vyc29yKGkKICAgICAg
ICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IGZhbHNlOyAvLyBJbmNsdWRlZC4KIAogICAgICAg
ICBpZiAoIWN1cnNvck9wdGlvbnMuZm9yd2FyZCkgeyAvLyBXZSBuZWVkIGEga2V5IHRoYXQgZXhp
c3RzLgotICAgICAgICAgICAgaWYgKCFmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbihtX2N1cnJlbnRU
cmFuc2FjdGlvbi5nZXQoKSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5LCBjdXJzb3JPcHRpb25zLmhp
Z2hLZXkpKQorICAgICAgICAgICAgaWYgKCFmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwo
bV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGN1cnNvck9wdGlvbnMuaGlnaEtleSwgY3Vyc29y
T3B0aW9ucy5oaWdoS2V5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAg
IGN1cnNvck9wdGlvbnMuaGlnaE9wZW4gPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
CiAgICAgICAgIGN1cnNvck9wdGlvbnMuaGlnaEtleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsICpyYW5nZS0+dXBwZXIoKSk7Ci0gICAg
ICAgIGlmICghZmluZExhc3RJbmRleEtleUVxdWFsVG8obV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0
KCksIGN1cnNvck9wdGlvbnMuaGlnaEtleSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSkgLy8gU2Vl
ayB0byB0aGUgKmxhc3QqIGtleSBpbiB0aGUgc2V0IG9mIG5vbi11bmlxdWUga2V5cy4KLSAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gcmFuZ2Ut
PnVwcGVyT3BlbigpOworCisgICAgICAgIFZlY3RvcjxjaGFyPiBmb3VuZEhpZ2hLZXk7CisgICAg
ICAgIGlmICghZmluZEdyZWF0ZXN0S2V5TGVzc1RoYW5PckVxdWFsKG1fY3VycmVudFRyYW5zYWN0
aW9uLmdldCgpLCBjdXJzb3JPcHRpb25zLmhpZ2hLZXksIGZvdW5kSGlnaEtleSkpIC8vIFNlZWsg
dG8gdGhlICpsYXN0KiBrZXkgaW4gdGhlIHNldCBvZiBub24tdW5pcXVlIGtleXMuCisgICAgICAg
ICAgICByZXR1cm4gMDsKKworICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGtleSBzaG91bGQgbm90
IGJlIGluY2x1ZGVkLCBidXQgd2UgZW5kIHVwIHdpdGggYSBzbWFsbGVyIGtleSwgd2Ugc2hvdWxk
IGluY2x1ZGUgdGhhdC4KKyAgICAgICAgaWYgKGN1cnNvck9wdGlvbnMuaGlnaE9wZW4gJiYgY29t
cGFyZUluZGV4S2V5cyhmb3VuZEhpZ2hLZXksIGN1cnNvck9wdGlvbnMuaGlnaEtleSkgPCAwKQor
ICAgICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IGZhbHNlOworCisgICAgICAgIGN1
cnNvck9wdGlvbnMuaGlnaEtleSA9IGZvdW5kSGlnaEtleTsKICAgICB9CiAKICAgICBSZWZQdHI8
SW5kZXhLZXlDdXJzb3JJbXBsPiBjdXJzb3IgPSBJbmRleEtleUN1cnNvckltcGw6OmNyZWF0ZSht
X2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgY3Vyc29yT3B0aW9ucyk7CkBAIC0xMzQ0LDE1ICsx
MzU0LDIzIEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkxldmVsREJC
YWNraW5nU3RvcmU6Om9wZW5JbmRleEN1cnNvcihpbnQ2CiAgICAgICAgIGN1cnNvck9wdGlvbnMu
aGlnaE9wZW4gPSBmYWxzZTsgLy8gSW5jbHVkZWQuCiAKICAgICAgICAgaWYgKCFjdXJzb3JPcHRp
b25zLmZvcndhcmQpIHsgLy8gV2UgbmVlZCBhIGtleSB0aGF0IGV4aXN0cy4KLSAgICAgICAgICAg
IGlmICghZmluZEdyZWF0ZXN0S2V5TGVzc1RoYW4obV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCks
IGN1cnNvck9wdGlvbnMuaGlnaEtleSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSkKKyAgICAgICAg
ICAgIGlmICghZmluZEdyZWF0ZXN0S2V5TGVzc1RoYW5PckVxdWFsKG1fY3VycmVudFRyYW5zYWN0
aW9uLmdldCgpLCBjdXJzb3JPcHRpb25zLmhpZ2hLZXksIGN1cnNvck9wdGlvbnMuaGlnaEtleSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBjdXJzb3JPcHRpb25zLmhp
Z2hPcGVuID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBjdXJzb3JP
cHRpb25zLmhpZ2hLZXkgPSBJbmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBpbmRleElkLCAqcmFuZ2UtPnVwcGVyKCkpOwotICAgICAgICBpZiAoIWZpbmRMYXN0
SW5kZXhLZXlFcXVhbFRvKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBjdXJzb3JPcHRpb25z
LmhpZ2hLZXksIGN1cnNvck9wdGlvbnMuaGlnaEtleSkpIC8vIFNlZWsgdG8gdGhlICpsYXN0KiBr
ZXkgaW4gdGhlIHNldCBvZiBub24tdW5pcXVlIGtleXMuCi0gICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IHJhbmdlLT51cHBlck9wZW4oKTsKKwor
ICAgICAgICBWZWN0b3I8Y2hhcj4gZm91bmRIaWdoS2V5OworICAgICAgICBpZiAoIWZpbmRHcmVh
dGVzdEtleUxlc3NUaGFuT3JFcXVhbChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgY3Vyc29y
T3B0aW9ucy5oaWdoS2V5LCBmb3VuZEhpZ2hLZXkpKSAvLyBTZWVrIHRvIHRoZSAqbGFzdCoga2V5
IGluIHRoZSBzZXQgb2Ygbm9uLXVuaXF1ZSBrZXlzLgorICAgICAgICAgICAgcmV0dXJuIDA7CisK
KyAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBrZXkgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCwgYnV0
IHdlIGVuZCB1cCB3aXRoIGEgc21hbGwga2V5LCB3ZSBzaG91bGQgaW5jbHVkZSB0aGF0LgorICAg
ICAgICBpZiAoY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKGZvdW5k
SGlnaEtleSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA8IDApCisgICAgICAgICAgICBjdXJzb3JP
cHRpb25zLmhpZ2hPcGVuID0gZmFsc2U7CisKKyAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5
ID0gZm91bmRIaWdoS2V5OwogICAgIH0KIAogICAgIFJlZlB0cjxJbmRleEN1cnNvckltcGw+IGN1
cnNvciA9IEluZGV4Q3Vyc29ySW1wbDo6Y3JlYXRlKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgp
LCBjdXJzb3JPcHRpb25zKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZjBjMTYzN2NlZWViNWRkYjFlMjUxZmRjM2Y3OTk1
NTEzZTBlYjBhLi5mOWE5ODY2NzdmN2I5NTQzN2I3MmZhN2Q0M2ViZDEzMTA4MWI2NTNjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTEtMjggIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZpeCByZXZlcnNlIGN1cnNvciB3aXRoIG5v
bi1leGlzdGVudCB1cHBlciBib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzMyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGVzdCB0byBjaGVjayB0aGF0IG9wZW5pbmcgYSByZXZlcnNlIGN1
cnNvciB3b3JrcyBldmVuIHdoZW4gdGhlCisgICAgICAgIGtleSBzcGVjaWZpZWQgYXMgdGhlIHVw
cGVyIGJvdW5kIGRvZXMgbm90IGV4aXN0LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLXJldmVyc2UtYnVnLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTI4
ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDb252ZXJ0IHNv
bWUgcGxhY2Vob2xkZXItcmVsYXRlZCB0ZXN0cyB0byByZWZ0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFkZTQ3N2EwOWRlYWZkYWU3NTIzZjg0NmEyY2VhNWJkMzE2
ZWRjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvci1yZXZlcnNlLWJ1Zy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMDcgQEAKK1Rlc3QgSW5k
ZXhlZERCIGtleXMgb3JkZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwg
d2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRl
eGVkREIgPT0gbnVsbCBpcyBmYWxzZQorSURCQ3Vyc29yID0gd2luZG93LklEQkN1cnNvciB8fCB3
aW5kb3cud2Via2l0SURCQ3Vyc29yOworUEFTUyBJREJDdXJzb3IgPT0gbnVsbCBpcyBmYWxzZQor
SURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElE
QlRyYW5zYWN0aW9uCitQQVNTIElEQlRyYW5zYWN0aW9uID09IG51bGwgaXMgZmFsc2UKKworb3Bl
bnJlcSA9IGluZGV4ZWREQi5vcGVuKCdjdXJzb3ItcmV2ZXJzZS1idWcnKQorZGIgPSBvcGVucmVx
LnJlc3VsdAordmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpCitEZWxldGVkIGFsbCBvYmplY3Qg
c3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUuY3Jl
YXRlSW5kZXgoJ2luZGV4JywgJycpCisKK3BvcHVsYXRpbmcgc3RvcmUuLi4KK3RyYW5zID0gZGIu
dHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitzdG9yZS5wdXQoMSwgMSkKK3N0b3JlLnB1dCgy
LCAyKQorc3RvcmUucHV0KDMsIDMpCit0ZXN0Q3Vyc29yKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rp
b24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Cit1cHBlckJv
dW5kOiA3IG9wZW46IGZhbHNlIGV4cGVjdGVkOiAzCitzdG9yZVJlcSA9IHN0b3JlLm9wZW5DdXJz
b3Iod2Via2l0SURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3Bl
biksIElEQkN1cnNvci5QUkVWKQoraW5kZXhSZXEgPSBpbmRleC5vcGVuQ3Vyc29yKHdlYmtpdElE
QktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJz
b3IuUFJFVikKK2luZGV4S2V5UmVxID0gaW5kZXgub3BlbktleUN1cnNvcih3ZWJraXRJREJLZXlS
YW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBS
RVYpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgdGVz
dC5leHBlY3RlZAorUEFTUyBjdXJzb3IudmFsdWUgaXMgdGVzdC5leHBlY3RlZAorUEFTUyBjdXJz
b3IucHJpbWFyeUtleSBpcyB0ZXN0LmV4cGVjdGVkCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0CitQQVNTIGN1cnNvci5rZXkgaXMgdGVzdC5leHBlY3RlZAorUEFTUyBjdXJzb3IudmFsdWUg
aXMgdGVzdC5leHBlY3RlZAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyB0ZXN0LmV4cGVjdGVk
CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgdGVzdC5l
eHBlY3RlZAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyB0ZXN0LmV4cGVjdGVkCit0ZXN0Q3Vy
c29yKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsKK2luZGV4ID0gc3Rv
cmUuaW5kZXgoJ2luZGV4Jyk7Cit1cHBlckJvdW5kOiA3IG9wZW46IHRydWUgZXhwZWN0ZWQ6IDMK
K3N0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcih3ZWJraXRJREJLZXlSYW5nZS51cHBlckJvdW5k
KHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpCitpbmRleFJlcSA9
IGluZGV4Lm9wZW5DdXJzb3Iod2Via2l0SURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVy
Qm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKQoraW5kZXhLZXlSZXEgPSBpbmRleC5v
cGVuS2V5Q3Vyc29yKHdlYmtpdElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5k
LCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKK1BBU1MgY3Vyc29yLmtleSBpcyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci52YWx1ZSBp
cyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIHRlc3QuZXhwZWN0ZWQK
K2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyB0ZXN0LmV4
cGVjdGVkCitQQVNTIGN1cnNvci52YWx1ZSBpcyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci5w
cmltYXJ5S2V5IGlzIHRlc3QuZXhwZWN0ZWQKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
K1BBU1MgY3Vyc29yLmtleSBpcyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5
IGlzIHRlc3QuZXhwZWN0ZWQKK3Rlc3RDdXJzb3IoKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbign
c3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5pbmRleCgnaW5kZXgnKTsKK3VwcGVyQm91bmQ6
IDMgb3BlbjogZmFsc2UgZXhwZWN0ZWQ6IDMKK3N0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcih3
ZWJraXRJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwg
SURCQ3Vyc29yLlBSRVYpCitpbmRleFJlcSA9IGluZGV4Lm9wZW5DdXJzb3Iod2Via2l0SURCS2V5
UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5Q
UkVWKQoraW5kZXhLZXlSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKHdlYmtpdElEQktleVJhbmdl
LnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikK
K2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyB0ZXN0LmV4
cGVjdGVkCitQQVNTIGN1cnNvci52YWx1ZSBpcyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci5w
cmltYXJ5S2V5IGlzIHRlc3QuZXhwZWN0ZWQKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQK
K1BBU1MgY3Vyc29yLmtleSBpcyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci52YWx1ZSBpcyB0
ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIHRlc3QuZXhwZWN0ZWQKK2N1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyB0ZXN0LmV4cGVj
dGVkCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIHRlc3QuZXhwZWN0ZWQKK3Rlc3RDdXJzb3Io
KQordHJhbnMgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX09O
TFkpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworaW5kZXggPSBzdG9yZS5p
bmRleCgnaW5kZXgnKTsKK3VwcGVyQm91bmQ6IDMgb3BlbjogdHJ1ZSBleHBlY3RlZDogMgorc3Rv
cmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKHdlYmtpdElEQktleVJhbmdlLnVwcGVyQm91bmQodGVz
dC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikKK2luZGV4UmVxID0gaW5k
ZXgub3BlbkN1cnNvcih3ZWJraXRJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3Vu
ZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpCitpbmRleEtleVJlcSA9IGluZGV4Lm9wZW5L
ZXlDdXJzb3Iod2Via2l0SURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRl
c3Qub3BlbiksIElEQkN1cnNvci5QUkVWKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAor
UEFTUyBjdXJzb3Iua2V5IGlzIHRlc3QuZXhwZWN0ZWQKK1BBU1MgY3Vyc29yLnZhbHVlIGlzIHRl
c3QuZXhwZWN0ZWQKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgdGVzdC5leHBlY3RlZAorY3Vy
c29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIHRlc3QuZXhwZWN0
ZWQKK1BBU1MgY3Vyc29yLnZhbHVlIGlzIHRlc3QuZXhwZWN0ZWQKK1BBU1MgY3Vyc29yLnByaW1h
cnlLZXkgaXMgdGVzdC5leHBlY3RlZAorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFT
UyBjdXJzb3Iua2V5IGlzIHRlc3QuZXhwZWN0ZWQKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMg
dGVzdC5leHBlY3RlZAordGVzdEN1cnNvcigpCitObyBtb3JlIHRlc3RzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2ZjYjFiZDcwODRiNTlmMjJiZjhhY2MwZGUzYTQzN2NjZTBkYWNkYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy5o
dG1sCkBAIC0wLDAgKzEsMTE4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisK
K2Rlc2NyaXB0aW9uKCJUZXN0IEluZGV4ZWREQiBrZXlzIG9yZGVyaW5nIGFuZCByZWFkYmFjayBm
cm9tIGN1cnNvcnMuIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cu
d2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5tb3pJbmRleGVkREI7Iik7CisgICAgc2hvdWxkQmVG
YWxzZSgiaW5kZXhlZERCID09IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJJREJDdXJzb3IgPSB3
aW5kb3cuSURCQ3Vyc29yIHx8IHdpbmRvdy53ZWJraXRJREJDdXJzb3I7Iik7CisgICAgc2hvdWxk
QmVGYWxzZSgiSURCQ3Vyc29yID09IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJJREJUcmFuc2Fj
dGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rp
b24iKTsKKyAgICBzaG91bGRCZUZhbHNlKCJJREJUcmFuc2FjdGlvbiA9PSBudWxsIik7CisKKyAg
ICBwcmVwYXJlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygib3BlbnJlcSA9IGluZGV4ZWREQi5vcGVu
KCdjdXJzb3ItcmV2ZXJzZS1idWcnKSIpOworICAgIG9wZW5yZXEub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworICAgIG9wZW5yZXEub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGV2YWxBbmRMb2coImRiID0gb3BlbnJlcS5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygidmVycmVxID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHZlcnJlcS5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnJlcS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYik7Cisg
ICAgICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4
KCdpbmRleCcsICcnKSIpOworICAgICAgICAgICAgdmVycmVxLnJlc3VsdC5vbmNvbXBsZXRlID0g
cG9wdWxhdGVTdG9yZTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBwb3B1bGF0
ZVN0b3JlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInBvcHVsYXRpbmcgc3RvcmUu
Li4iKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworCisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KDEsIDEpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUucHV0KDIsIDIpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUucHV0KDMsIDMpIik7
CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7Cit9CisKK3ZhciB0ZXN0cyA9IFsK
KyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogZmFsc2UsIGV4cGVjdGVkOiAz
fSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogNywgb3BlbjogdHJ1ZSwgIGV4cGVjdGVk
OiAzfSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogZmFsc2UsIGV4cGVj
dGVkOiAzfSwKKyAgICAgICAgICAgICAgICB7dXBwZXJCb3VuZDogMywgb3BlbjogdHJ1ZSwgIGV4
cGVjdGVkOiAyfQorICAgICAgICAgICAgXTsKKworZnVuY3Rpb24gdGVzdEN1cnNvcigpCit7Cisg
ICAgZGVidWcoInRlc3RDdXJzb3IoKSIpOworCisgICAgaWYgKHRlc3RzLmxlbmd0aCA9PT0gMCkg
eworICAgICAgICBkZWJ1ZygiTm8gbW9yZSB0ZXN0cy4iKTsKKyAgICAgICAgZG9uZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdCA9IHRlc3RzLnNoaWZ0KCk7CisKKyAgICBl
dmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9u
LlJFQURfT05MWSkiKTsKKyAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRy
YW5zLm9uY29tcGxldGUgPSB0ZXN0Q3Vyc29yOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7Iik7CisgICAgZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5pbmRleCgnaW5kZXgnKTsiKTsKKworICAgIHZhciB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgICAgICBpZiAoY3Vyc29yID09PSBudWxsKSB7CisgICAgICAgICAgICBkZWJ1ZygiY3Vyc29y
IHNob3VsZCBub3QgYmUgbnVsbCIpOworICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCAidGVz
dC5leHBlY3RlZCIpOworICAgICAgICBpZiAoInZhbHVlIiBpbiBjdXJzb3IpCisgICAgICAgICAg
ICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgInRlc3QuZXhwZWN0ZWQiKTsKKyAgICAgICAgc2hv
dWxkQmUoImN1cnNvci5wcmltYXJ5S2V5IiwgInRlc3QuZXhwZWN0ZWQiKTsKKworICAgICAgICAv
LyBMZXQgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaC4KKyAgICB9CisKKyAgICBkZWJ1ZygidXBwZXJC
b3VuZDogIiArIHRlc3QudXBwZXJCb3VuZCArICIgb3BlbjogIiArIHRlc3Qub3BlbiArICIgZXhw
ZWN0ZWQ6ICIgKyB0ZXN0LmV4cGVjdGVkKTsKKyAgICBzdG9yZVJlcSA9IGV2YWxBbmRMb2coInN0
b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcih3ZWJraXRJREJLZXlSYW5nZS51cHBlckJvdW5kKHRl
c3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7CisgICAgc3RvcmVS
ZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOworCisgICAgaW5kZXhSZXEgPSBldmFsQW5kTG9n
KCJpbmRleFJlcSA9IGluZGV4Lm9wZW5DdXJzb3Iod2Via2l0SURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKSIpOworICAgIGlu
ZGV4UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKKworICAgIGluZGV4S2V5UmVxID0gZXZh
bEFuZExvZygiaW5kZXhLZXlSZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKHdlYmtpdElEQktleVJh
bmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJF
VikiKTsKKyAgICBpbmRleEtleVJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247Cit9CisKK3Rl
c3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116978</attachid>
            <date>2011-11-29 08:56:30 -0800</date>
            <delta_ts>2011-11-30 13:47:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73220-20111129165628.patch</filename>
            <type>text/plain</type>
            <size>18281</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNmODNmZmJiYzE3NzBi
MWQyMjdiZTk3Njk2ZjZkZDdkYjljNjZjOC4uZWE0ZTI4NTk2Y2YzNjgxZGNiMDQwZTY0NDFhZTNi
ODMwNTk4Y2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTI4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBGaXgg
cmV2ZXJzZSBjdXJzb3Igd2l0aCBub24tZXhpc3RlbnQgdXBwZXIgYm91bmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMjIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNvZGUgcHJldmlvdXNseSBk
aWQgbm90IHByb3Blcmx5IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUKKyAgICAgICAgc3BlY2lm
aWVkIHVwcGVyIGJvdW5kIGZvciBhIHJldmVyc2UgY3Vyc29yIGRpZCBub3QgZXhpc3QuCisKKyAg
ICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0bWwKKwor
ICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3JlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5JbmRleEtleUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhDdXJz
b3IpOgorCiAyMDExLTExLTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBJbXByb3ZlIEZvbnRNZXRyaWNzIGFjY3VyYWN5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBl
Yzc1ZDBmYzA2ZDk1ZGVjYWZjNDU5ZGY3Y2E2MDlhYTY0MGM2ZDRjLi4yMzA1NjljYWZjMzlmY2Yx
MTcwOWQwYmQ3ZjAxY2E3OTM2NTQzOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTgwMyw3ICs4MDMsNyBAQCBib29sIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OnB1dEluZGV4RGF0YUZvclJlY29yZChpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3QgbwogICAgIHJldHVybiBtX2N1cnJlbnRUcmFuc2FjdGlvbi0+cHV0KGlu
ZGV4RGF0YUtleSwgZGF0YSk7CiB9CiAKLXN0YXRpYyBib29sIGZpbmRHcmVhdGVzdEtleUxlc3NU
aGFuKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IFZlY3RvcjxjaGFyPiYg
dGFyZ2V0LCBWZWN0b3I8Y2hhcj4mIGZvdW5kS2V5KQorc3RhdGljIGJvb2wgZmluZEdyZWF0ZXN0
S2V5TGVzc1RoYW5PckVxdWFsKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0
IFZlY3RvcjxjaGFyPiYgdGFyZ2V0LCBWZWN0b3I8Y2hhcj4mIGZvdW5kS2V5KQogewogICAgIE93
blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7
CiAgICAgaXQtPnNlZWsodGFyZ2V0KTsKQEAgLTgxNCwxNCArODE0LDIwIEBAIHN0YXRpYyBib29s
IGZpbmRHcmVhdGVzdEtleUxlc3NUaGFuKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGNvbnN0IFZlY3RvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgd2hp
bGUgKGNvbXBhcmVJbmRleEtleXMoaXQtPmtleSgpLCB0YXJnZXQpID49IDApIHsKKyAgICB3aGls
ZSAoY29tcGFyZUluZGV4S2V5cyhpdC0+a2V5KCksIHRhcmdldCkgPiAwKSB7CiAgICAgICAgIGl0
LT5wcmV2KCk7CiAgICAgICAgIGlmICghaXQtPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBmb3VuZEtleS5jbGVhcigpOwotICAgIGZvdW5kS2V5LmFw
cGVuZChpdC0+a2V5KCkuYmVnaW4oKSwgaXQtPmtleSgpLmVuZCgpIC0gaXQtPmtleSgpLmJlZ2lu
KCkpOworICAgIGRvIHsKKyAgICAgICAgZm91bmRLZXkuY2xlYXIoKTsKKyAgICAgICAgZm91bmRL
ZXkuYXBwZW5kKGl0LT5rZXkoKS5iZWdpbigpLCBpdC0+a2V5KCkuZW5kKCkgLSBpdC0+a2V5KCku
YmVnaW4oKSk7CisKKyAgICAgICAgLy8gVGhlcmUgY2FuIGJlIHNldmVyYWwgaW5kZXgga2V5cyB0
aGF0IGNvbXBhcmUgZXF1YWwuIFdlIHdhbnQgdGhlIGxhc3Qgb25lLgorICAgICAgICBpdC0+bmV4
dCgpOworICAgIH0gd2hpbGUgKGl0LT5pc1ZhbGlkKCkgJiYgIWNvbXBhcmVJbmRleEtleXMoaXQt
PmtleSgpLCB0YXJnZXQpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMjI2LDIzICsx
MjMyLDYgQEAgYm9vbCBJbmRleEN1cnNvckltcGw6OmxvYWRDdXJyZW50Um93KCkKIAogfQogCi1z
dGF0aWMgYm9vbCBmaW5kTGFzdEluZGV4S2V5RXF1YWxUbyhMZXZlbERCVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHRhcmdldCwgVmVjdG9yPGNoYXI+JiBmb3Vu
ZEtleSkKLXsKLSAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IHRyYW5zYWN0aW9uLT5j
cmVhdGVJdGVyYXRvcigpOwotICAgIGl0LT5zZWVrKHRhcmdldCk7Ci0KLSAgICBpZiAoIWl0LT5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHdoaWxlIChpdC0+aXNWYWxp
ZCgpICYmICFjb21wYXJlSW5kZXhLZXlzKGl0LT5rZXkoKSwgdGFyZ2V0KSkgewotICAgICAgICBm
b3VuZEtleS5jbGVhcigpOwotICAgICAgICBmb3VuZEtleS5hcHBlbmQoaXQtPmtleSgpLmJlZ2lu
KCksIGl0LT5rZXkoKS5lbmQoKSAtIGl0LT5rZXkoKS5iZWdpbigpKTsKLSAgICAgICAgaXQtPm5l
eHQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU6OkN1cnNvcj4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Blbk9iamVjdFN0b3Jl
Q3Vyc29yKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJ
REJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAg
ICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwpAQCAtMTI2MywxNiArMTI1MiwzMSBAQCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpvcGVuT2JqZWN0U3RvcmVDdXJzbwogCiAgICAgaWYgKCF1cHBlckJvdW5kKSB7CiAgICAgICAg
IGN1cnNvck9wdGlvbnMuaGlnaEtleSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIG1heElEQktleSgpKTsKLSAgICAgICAgY3Vyc29yT3B0aW9u
cy5oaWdoT3BlbiA9IHRydWU7IC8vIE5vdCBpbmNsdWRlZC4KIAotICAgICAgICBpZiAoIWN1cnNv
ck9wdGlvbnMuZm9yd2FyZCkgeyAvLyBXZSBuZWVkIGEga2V5IHRoYXQgZXhpc3RzLgotICAgICAg
ICAgICAgaWYgKCFmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbihtX2N1cnJlbnRUcmFuc2FjdGlvbi5n
ZXQoKSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5LCBjdXJzb3JPcHRpb25zLmhpZ2hLZXkpKQorICAg
ICAgICBpZiAoY3Vyc29yT3B0aW9ucy5mb3J3YXJkKQorICAgICAgICAgICAgY3Vyc29yT3B0aW9u
cy5oaWdoT3BlbiA9IHRydWU7IC8vIE5vdCBpbmNsdWRlZC4KKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAvLyBXZSBuZWVkIGEga2V5IHRoYXQgZXhpc3RzLgorICAgICAgICAgICAgaWYgKCFm
aW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCks
IGN1cnNvck9wdGlvbnMuaGlnaEtleSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGN1cnNvck9wdGlvbnMuaGlnaE9wZW4gPSBm
YWxzZTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGN1cnNvck9wdGlvbnMuaGln
aEtleSA9IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsICpyYW5nZS0+dXBwZXIoKSk7CiAgICAgICAgIGN1cnNvck9wdGlvbnMuaGlnaE9wZW4gPSBy
YW5nZS0+dXBwZXJPcGVuKCk7CisKKyAgICAgICAgaWYgKCFjdXJzb3JPcHRpb25zLmZvcndhcmQp
IHsKKyAgICAgICAgICAgIC8vIEZvciByZXZlcnNlIGN1cnNvcnMsIHdlIG5lZWQgYSBrZXkgdGhh
dCBleGlzdHMuCisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZm91bmRIaWdoS2V5OworICAgICAg
ICAgICAgaWYgKCFmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwobV9jdXJyZW50VHJhbnNh
Y3Rpb24uZ2V0KCksIGN1cnNvck9wdGlvbnMuaGlnaEtleSwgZm91bmRIaWdoS2V5KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBrZXkg
c2hvdWxkIG5vdCBiZSBpbmNsdWRlZCwgYnV0IHdlIGVuZCB1cCB3aXRoIGEgc21hbGxlciBrZXks
IHdlIHNob3VsZCBpbmNsdWRlIHRoYXQuCisgICAgICAgICAgICBpZiAoY3Vyc29yT3B0aW9ucy5o
aWdoT3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKGZvdW5kSGlnaEtleSwgY3Vyc29yT3B0aW9ucy5o
aWdoS2V5KSA8IDApCisgICAgICAgICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IGZh
bHNlOworCisgICAgICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hLZXkgPSBmb3VuZEhpZ2hLZXk7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBSZWZQdHI8T2JqZWN0U3RvcmVDdXJzb3JJbXBsPiBj
dXJzb3IgPSBPYmplY3RTdG9yZUN1cnNvckltcGw6OmNyZWF0ZShtX2N1cnJlbnRUcmFuc2FjdGlv
bi5nZXQoKSwgY3Vyc29yT3B0aW9ucyk7CkBAIC0xMzA0LDE1ICsxMzA4LDIzIEBAIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om9wZW5J
bmRleEtleUN1cnNvcihpCiAgICAgICAgIGN1cnNvck9wdGlvbnMuaGlnaE9wZW4gPSBmYWxzZTsg
Ly8gSW5jbHVkZWQuCiAKICAgICAgICAgaWYgKCFjdXJzb3JPcHRpb25zLmZvcndhcmQpIHsgLy8g
V2UgbmVlZCBhIGtleSB0aGF0IGV4aXN0cy4KLSAgICAgICAgICAgIGlmICghZmluZEdyZWF0ZXN0
S2V5TGVzc1RoYW4obV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGN1cnNvck9wdGlvbnMuaGln
aEtleSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSkKKyAgICAgICAgICAgIGlmICghZmluZEdyZWF0
ZXN0S2V5TGVzc1RoYW5PckVxdWFsKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBjdXJzb3JP
cHRpb25zLmhpZ2hLZXksIGN1cnNvck9wdGlvbnMuaGlnaEtleSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gZmFsc2U7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hLZXkgPSBJ
bmRleERhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAq
cmFuZ2UtPnVwcGVyKCkpOwotICAgICAgICBpZiAoIWZpbmRMYXN0SW5kZXhLZXlFcXVhbFRvKG1f
Y3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBjdXJzb3JPcHRpb25zLmhpZ2hLZXksIGN1cnNvck9w
dGlvbnMuaGlnaEtleSkpIC8vIFNlZWsgdG8gdGhlICpsYXN0KiBrZXkgaW4gdGhlIHNldCBvZiBu
b24tdW5pcXVlIGtleXMuCi0gICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY3Vyc29yT3B0
aW9ucy5oaWdoT3BlbiA9IHJhbmdlLT51cHBlck9wZW4oKTsKKworICAgICAgICBWZWN0b3I8Y2hh
cj4gZm91bmRIaWdoS2V5OworICAgICAgICBpZiAoIWZpbmRHcmVhdGVzdEtleUxlc3NUaGFuT3JF
cXVhbChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5LCBm
b3VuZEhpZ2hLZXkpKSAvLyBTZWVrIHRvIHRoZSAqbGFzdCoga2V5IGluIHRoZSBzZXQgb2Ygbm9u
LXVuaXF1ZSBrZXlzLgorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gSWYgdGhl
IHRhcmdldCBrZXkgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCwgYnV0IHdlIGVuZCB1cCB3aXRoIGEg
c21hbGxlciBrZXksIHdlIHNob3VsZCBpbmNsdWRlIHRoYXQuCisgICAgICAgIGlmIChjdXJzb3JP
cHRpb25zLmhpZ2hPcGVuICYmIGNvbXBhcmVJbmRleEtleXMoZm91bmRIaWdoS2V5LCBjdXJzb3JP
cHRpb25zLmhpZ2hLZXkpIDwgMCkKKyAgICAgICAgICAgIGN1cnNvck9wdGlvbnMuaGlnaE9wZW4g
PSBmYWxzZTsKKworICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hLZXkgPSBmb3VuZEhpZ2hLZXk7
CiAgICAgfQogCiAgICAgUmVmUHRyPEluZGV4S2V5Q3Vyc29ySW1wbD4gY3Vyc29yID0gSW5kZXhL
ZXlDdXJzb3JJbXBsOjpjcmVhdGUobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGN1cnNvck9w
dGlvbnMpOwpAQCAtMTM0NCwxNSArMTM1NiwyMyBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuSW5kZXhDdXJzb3IoaW50Ngog
ICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gZmFsc2U7IC8vIEluY2x1ZGVkLgogCiAg
ICAgICAgIGlmICghY3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7IC8vIFdlIG5lZWQgYSBrZXkgdGhh
dCBleGlzdHMuCi0gICAgICAgICAgICBpZiAoIWZpbmRHcmVhdGVzdEtleUxlc3NUaGFuKG1fY3Vy
cmVudFRyYW5zYWN0aW9uLmdldCgpLCBjdXJzb3JPcHRpb25zLmhpZ2hLZXksIGN1cnNvck9wdGlv
bnMuaGlnaEtleSkpCisgICAgICAgICAgICBpZiAoIWZpbmRHcmVhdGVzdEtleUxlc3NUaGFuT3JF
cXVhbChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5LCBj
dXJzb3JPcHRpb25zLmhpZ2hLZXkpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5ID0gSW5kZXhEYXRhS2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgKnJhbmdlLT51cHBlcigpKTsK
LSAgICAgICAgaWYgKCFmaW5kTGFzdEluZGV4S2V5RXF1YWxUbyhtX2N1cnJlbnRUcmFuc2FjdGlv
bi5nZXQoKSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5LCBjdXJzb3JPcHRpb25zLmhpZ2hLZXkpKSAv
LyBTZWVrIHRvIHRoZSAqbGFzdCoga2V5IGluIHRoZSBzZXQgb2Ygbm9uLXVuaXF1ZSBrZXlzLgot
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGN1cnNvck9wdGlvbnMuaGlnaE9wZW4gPSBy
YW5nZS0+dXBwZXJPcGVuKCk7CisKKyAgICAgICAgVmVjdG9yPGNoYXI+IGZvdW5kSGlnaEtleTsK
KyAgICAgICAgaWYgKCFmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwobV9jdXJyZW50VHJh
bnNhY3Rpb24uZ2V0KCksIGN1cnNvck9wdGlvbnMuaGlnaEtleSwgZm91bmRIaWdoS2V5KSkgLy8g
U2VlayB0byB0aGUgKmxhc3QqIGtleSBpbiB0aGUgc2V0IG9mIG5vbi11bmlxdWUga2V5cy4KKyAg
ICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8vIElmIHRoZSB0YXJnZXQga2V5IHNob3Vs
ZCBub3QgYmUgaW5jbHVkZWQsIGJ1dCB3ZSBlbmQgdXAgd2l0aCBhIHNtYWxsZXIga2V5LCB3ZSBz
aG91bGQgaW5jbHVkZSB0aGF0LgorICAgICAgICBpZiAoY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiAm
JiBjb21wYXJlSW5kZXhLZXlzKGZvdW5kSGlnaEtleSwgY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA8
IDApCisgICAgICAgICAgICBjdXJzb3JPcHRpb25zLmhpZ2hPcGVuID0gZmFsc2U7CisKKyAgICAg
ICAgY3Vyc29yT3B0aW9ucy5oaWdoS2V5ID0gZm91bmRIaWdoS2V5OwogICAgIH0KIAogICAgIFJl
ZlB0cjxJbmRleEN1cnNvckltcGw+IGN1cnNvciA9IEluZGV4Q3Vyc29ySW1wbDo6Y3JlYXRlKG1f
Y3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBjdXJzb3JPcHRpb25zKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3Y2MzZjRi
YzliZDcyMjk4MTljOTA1Y2ZiZjFmY2U2MjhmNDVmZDY2Li4wZDUzNDEyMThhMDQ2YjgwYzkxMDQ1
YTdlY2NhNzNhZGQ5NWJiMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTEtMjggIEhh
bnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEZp
eCByZXZlcnNlIGN1cnNvciB3aXRoIG5vbi1leGlzdGVudCB1cHBlciBib3VuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMyMjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byBjaGVjayB0
aGF0IG9wZW5pbmcgYSByZXZlcnNlIGN1cnNvciB3b3JrcyBldmVuIHdoZW4gdGhlCisgICAgICAg
IGtleSBzcGVjaWZpZWQgYXMgdGhlIHVwcGVyIGJvdW5kIGRvZXMgbm90IGV4aXN0LgorCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLmh0
bWw6IEFkZGVkLgorCiAyMDExLTExLTI5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFu
bkByaW0uY29tPgogCiAgICAgICAgIFNWRyA8cGF0aD4gRFJUIGR1bXBzIGhhdmUgcm91bmRpbmcg
cHJvYmxlbXMgYWNyb3NzIHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLXJldmVyc2UtYnVnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2JiMjlhOGZmZmExOTgwM2FkZmY0YzM4YjJhYzVhOTViZGNlNmYzYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1
Zy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMDkgQEAKK1Rlc3QgSW5kZXhlZERCIGtleXMgb3Jk
ZXJpbmcgYW5kIHJlYWRiYWNrIGZyb20gY3Vyc29ycy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdElu
ZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBp
cyBmYWxzZQorSURCQ3Vyc29yID0gd2luZG93LklEQkN1cnNvciB8fCB3aW5kb3cud2Via2l0SURC
Q3Vyc29yOworUEFTUyBJREJDdXJzb3IgPT0gbnVsbCBpcyBmYWxzZQorSURCVHJhbnNhY3Rpb24g
PSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uCitQ
QVNTIElEQlRyYW5zYWN0aW9uID09IG51bGwgaXMgZmFsc2UKK0lEQktleVJhbmdlID0gd2luZG93
LklEQktleVJhbmdlIHx8IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZQorUEFTUyBJREJLZXlSYW5n
ZSA9PSBudWxsIGlzIGZhbHNlCisKK29wZW5yZXEgPSBpbmRleGVkREIub3BlbignY3Vyc29yLXJl
dmVyc2UtYnVnJykKK2RiID0gb3BlbnJlcS5yZXN1bHQKK3ZlcnJlcSA9IGRiLnNldFZlcnNpb24o
JzEnKQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlJykKK3N0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICcnKQorCitwb3B1bGF0
aW5nIHN0b3JlLi4uCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0
aW9uLlJFQURfV1JJVEUpCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOworc3Rv
cmUucHV0KDEsIDEpCitzdG9yZS5wdXQoMiwgMikKK3N0b3JlLnB1dCgzLCAzKQordGVzdEN1cnNv
cigpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0aW9uLlJFQURf
T05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRleCA9IHN0b3Jl
LmluZGV4KCdpbmRleCcpOwordXBwZXJCb3VuZDogNyBvcGVuOiBmYWxzZSBleHBlY3RlZDogMwor
c3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51
cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikKK2luZGV4UmVxID0gaW5kZXgu
b3BlbkN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5v
cGVuKSwgSURCQ3Vyc29yLlBSRVYpCitpbmRleEtleVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3Io
SURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1
cnNvci5QUkVWKQorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5
IGlzIHRlc3QuZXhwZWN0ZWQKK1BBU1MgY3Vyc29yLnZhbHVlIGlzIHRlc3QuZXhwZWN0ZWQKK1BB
U1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgdGVzdC5leHBlY3RlZAorY3Vyc29yID0gZXZlbnQudGFy
Z2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlzIHRlc3QuZXhwZWN0ZWQKK1BBU1MgY3Vyc29y
LnZhbHVlIGlzIHRlc3QuZXhwZWN0ZWQKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgdGVzdC5l
eHBlY3RlZAorY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyBjdXJzb3Iua2V5IGlz
IHRlc3QuZXhwZWN0ZWQKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgdGVzdC5leHBlY3RlZAor
dGVzdEN1cnNvcigpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsIElEQlRyYW5zYWN0
aW9uLlJFQURfT05MWSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJyk7CitpbmRl
eCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOwordXBwZXJCb3VuZDogNyBvcGVuOiB0cnVlIGV4cGVj
dGVkOiAzCitzdG9yZVJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKQoraW5kZXhSZXEg
PSBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5k
LCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikKK2luZGV4S2V5UmVxID0gaW5kZXgub3Blbktl
eUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVu
KSwgSURCQ3Vyc29yLlBSRVYpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1
cnNvci5rZXkgaXMgdGVzdC5leHBlY3RlZAorUEFTUyBjdXJzb3IudmFsdWUgaXMgdGVzdC5leHBl
Y3RlZAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyB0ZXN0LmV4cGVjdGVkCitjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgdGVzdC5leHBlY3RlZAorUEFT
UyBjdXJzb3IudmFsdWUgaXMgdGVzdC5leHBlY3RlZAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyB0ZXN0LmV4cGVjdGVkCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNv
ci5rZXkgaXMgdGVzdC5leHBlY3RlZAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyB0ZXN0LmV4
cGVjdGVkCit0ZXN0Q3Vyc29yKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlJywgSURC
VHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUn
KTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Cit1cHBlckJvdW5kOiAzIG9wZW46IGZh
bHNlIGV4cGVjdGVkOiAzCitzdG9yZVJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoSURCS2V5UmFuZ2Uu
dXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKQor
aW5kZXhSZXEgPSBpbmRleC5vcGVuQ3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51
cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikKK2luZGV4S2V5UmVxID0gaW5k
ZXgub3BlbktleUN1cnNvcihJREJLZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwg
dGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
CitQQVNTIGN1cnNvci5rZXkgaXMgdGVzdC5leHBlY3RlZAorUEFTUyBjdXJzb3IudmFsdWUgaXMg
dGVzdC5leHBlY3RlZAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyB0ZXN0LmV4cGVjdGVkCitj
dXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGN1cnNvci5rZXkgaXMgdGVzdC5leHBl
Y3RlZAorUEFTUyBjdXJzb3IudmFsdWUgaXMgdGVzdC5leHBlY3RlZAorUEFTUyBjdXJzb3IucHJp
bWFyeUtleSBpcyB0ZXN0LmV4cGVjdGVkCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQ
QVNTIGN1cnNvci5rZXkgaXMgdGVzdC5leHBlY3RlZAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyB0ZXN0LmV4cGVjdGVkCit0ZXN0Q3Vyc29yKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmUnKTsKK2luZGV4ID0gc3RvcmUuaW5kZXgoJ2luZGV4Jyk7Cit1cHBlckJvdW5kOiAz
IG9wZW46IHRydWUgZXhwZWN0ZWQ6IDIKK3N0b3JlUmVxID0gc3RvcmUub3BlbkN1cnNvcihJREJL
ZXlSYW5nZS51cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29y
LlBSRVYpCitpbmRleFJlcSA9IGluZGV4Lm9wZW5DdXJzb3IoSURCS2V5UmFuZ2UudXBwZXJCb3Vu
ZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5QUkVWKQoraW5kZXhLZXlS
ZXEgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKElEQktleVJhbmdlLnVwcGVyQm91bmQodGVzdC51cHBl
ckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFVikKK2N1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci52
YWx1ZSBpcyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci5wcmltYXJ5S2V5IGlzIHRlc3QuZXhw
ZWN0ZWQKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyB0
ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci52YWx1ZSBpcyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1
cnNvci5wcmltYXJ5S2V5IGlzIHRlc3QuZXhwZWN0ZWQKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKK1BBU1MgY3Vyc29yLmtleSBpcyB0ZXN0LmV4cGVjdGVkCitQQVNTIGN1cnNvci5wcmlt
YXJ5S2V5IGlzIHRlc3QuZXhwZWN0ZWQKK3Rlc3RDdXJzb3IoKQorTm8gbW9yZSB0ZXN0cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcmV2ZXJzZS1idWcuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1yZXZlcnNlLWJ1Zy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1NDk5Mzk4ZDgwMDFhZWEzYzIyZDE1NWY3ODA2MDcyN2I1NmNmMzMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItcmV2
ZXJzZS1idWcuaHRtbApAQCAtMCwwICsxLDEyMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIga2V5cyBvcmRlcmluZyBhbmQg
cmVhZGJhY2sgZnJvbSBjdXJzb3JzLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIg
fHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAg
IHNob3VsZEJlRmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisgICAgZXZhbEFuZExvZygiSURC
Q3Vyc29yID0gd2luZG93LklEQkN1cnNvciB8fCB3aW5kb3cud2Via2l0SURCQ3Vyc29yOyIpOwor
ICAgIHNob3VsZEJlRmFsc2UoIklEQkN1cnNvciA9PSBudWxsIik7CisgICAgZXZhbEFuZExvZygi
SURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElE
QlRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmVGYWxzZSgiSURCVHJhbnNhY3Rpb24gPT0gbnVs
bCIpOworICAgIGV2YWxBbmRMb2coIklEQktleVJhbmdlID0gd2luZG93LklEQktleVJhbmdlIHx8
IHdpbmRvdy53ZWJraXRJREJLZXlSYW5nZSIpOworICAgIHNob3VsZEJlRmFsc2UoIklEQktleVJh
bmdlID09IG51bGwiKTsKKworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBw
cmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBldmFsQW5kTG9nKCJvcGVu
cmVxID0gaW5kZXhlZERCLm9wZW4oJ2N1cnNvci1yZXZlcnNlLWJ1ZycpIik7CisgICAgb3BlbnJl
cS5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgb3BlbnJlcS5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiZGIgPSBvcGVucmVxLnJlc3Vs
dCIpOworICAgICAgICBldmFsQW5kTG9nKCJ2ZXJyZXEgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsK
KyAgICAgICAgdmVycmVxLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAg
ICAgdmVycmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiKTsKKyAgICAgICAgICAgIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJycpIik7CisgICAgICAgICAgICB2ZXJyZXEu
cmVzdWx0Lm9uY29tcGxldGUgPSBwb3B1bGF0ZVN0b3JlOworICAgICAgICB9OworICAgIH07Cit9
CisKK2Z1bmN0aW9uIHBvcHVsYXRlU3RvcmUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygicG9wdWxhdGluZyBzdG9yZS4uLiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICBldmFs
QW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpOyIpOworICAgIHRyYW5z
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMSwg
MSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoMiwgMikiKTsKKyAgICBldmFsQW5kTG9n
KCJzdG9yZS5wdXQoMywgMykiKTsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEN1cnNvcjsK
K30KKwordmFyIHRlc3RzID0gWworICAgICAgICAgICAgICAgIHt1cHBlckJvdW5kOiA3LCBvcGVu
OiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAgIHt1cHBlckJvdW5kOiA3LCBv
cGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAgIHt1cHBlckJvdW5kOiAz
LCBvcGVuOiBmYWxzZSwgZXhwZWN0ZWQ6IDN9LAorICAgICAgICAgICAgICAgIHt1cHBlckJvdW5k
OiAzLCBvcGVuOiB0cnVlLCAgZXhwZWN0ZWQ6IDJ9CisgICAgICAgICAgICBdOworCitmdW5jdGlv
biB0ZXN0Q3Vyc29yKCkKK3sKKyAgICBkZWJ1ZygidGVzdEN1cnNvcigpIik7CisKKyAgICBpZiAo
dGVzdHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgIGRlYnVnKCJObyBtb3JlIHRlc3RzLiIpOwor
ICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0ID0gdGVz
dHMuc2hpZnQoKTsKKworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlJywgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHRyYW5zLm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFi
b3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RDdXJzb3I7CisgICAgZXZh
bEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKTsiKTsKKyAgICBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmluZGV4KCdpbmRleCcpOyIpOworCisgICAgdmFyIHRlc3RG
dW5jdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIGlmIChjdXJzb3IgPT09IG51bGwpIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJjdXJzb3Igc2hvdWxkIG5vdCBiZSBudWxsIik7CisgICAgICAgICAgICBm
YWlsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzaG91bGRC
ZSgiY3Vyc29yLmtleSIsICJ0ZXN0LmV4cGVjdGVkIik7CisgICAgICAgIGlmICgidmFsdWUiIGlu
IGN1cnNvcikKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3IudmFsdWUiLCAidGVzdC5leHBl
Y3RlZCIpOworICAgICAgICBzaG91bGRCZSgiY3Vyc29yLnByaW1hcnlLZXkiLCAidGVzdC5leHBl
Y3RlZCIpOworCisgICAgICAgIC8vIExldCB0aGUgdHJhbnNhY3Rpb24gZmluaXNoLgorICAgIH0K
KworICAgIGRlYnVnKCJ1cHBlckJvdW5kOiAiICsgdGVzdC51cHBlckJvdW5kICsgIiBvcGVuOiAi
ICsgdGVzdC5vcGVuICsgIiBleHBlY3RlZDogIiArIHRlc3QuZXhwZWN0ZWQpOworICAgIHN0b3Jl
UmVxID0gZXZhbEFuZExvZygic3RvcmVSZXEgPSBzdG9yZS5vcGVuQ3Vyc29yKElEQktleVJhbmdl
LnVwcGVyQm91bmQodGVzdC51cHBlckJvdW5kLCB0ZXN0Lm9wZW4pLCBJREJDdXJzb3IuUFJFViki
KTsKKyAgICBzdG9yZVJlcS5vbnN1Y2Nlc3MgPSB0ZXN0RnVuY3Rpb247CisKKyAgICBpbmRleFJl
cSA9IGV2YWxBbmRMb2coImluZGV4UmVxID0gaW5kZXgub3BlbkN1cnNvcihJREJLZXlSYW5nZS51
cHBlckJvdW5kKHRlc3QudXBwZXJCb3VuZCwgdGVzdC5vcGVuKSwgSURCQ3Vyc29yLlBSRVYpIik7
CisgICAgaW5kZXhSZXEub25zdWNjZXNzID0gdGVzdEZ1bmN0aW9uOworCisgICAgaW5kZXhLZXlS
ZXEgPSBldmFsQW5kTG9nKCJpbmRleEtleVJlcSA9IGluZGV4Lm9wZW5LZXlDdXJzb3IoSURCS2V5
UmFuZ2UudXBwZXJCb3VuZCh0ZXN0LnVwcGVyQm91bmQsIHRlc3Qub3BlbiksIElEQkN1cnNvci5Q
UkVWKSIpOworICAgIGluZGV4S2V5UmVxLm9uc3VjY2VzcyA9IHRlc3RGdW5jdGlvbjsKK30KKwor
dGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>
<flag name="review"
          id="116283"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>