<?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>103964</bug_id>
          
          <creation_ts>2012-12-03 20:02:22 -0800</creation_ts>
          <short_desc>IndexedDB: Abort transactions because of leveldb errors part 4</short_desc>
          <delta_ts>2012-12-06 14:57:26 -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>103960</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>782156</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-03 20:02:22 -0800</bug_when>
    <thetext>IndexedDB: Abort transactions because of leveldb errors part 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782160</commentid>
    <comment_count>1</comment_count>
      <attachid>177399</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-03 20:05:05 -0800</bug_when>
    <thetext>Created attachment 177399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783063</commentid>
    <comment_count>2</comment_count>
      <attachid>177593</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 16:04:04 -0800</bug_when>
    <thetext>Created attachment 177593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783249</commentid>
    <comment_count>3</comment_count>
      <attachid>177648</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 19:05:57 -0800</bug_when>
    <thetext>Created attachment 177648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783264</commentid>
    <comment_count>4</comment_count>
      <attachid>177652</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 19:28:28 -0800</bug_when>
    <thetext>Created attachment 177652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784254</commentid>
    <comment_count>5</comment_count>
      <attachid>177863</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 16:39:55 -0800</bug_when>
    <thetext>Created attachment 177863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784293</commentid>
    <comment_count>6</comment_count>
      <attachid>177871</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 17:03:16 -0800</bug_when>
    <thetext>Created attachment 177871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784294</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 17:04:03 -0800</bug_when>
    <thetext>Josh or Alec, could one of you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784361</commentid>
    <comment_count>8</comment_count>
      <attachid>177871</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 17:48:55 -0800</bug_when>
    <thetext>Comment on attachment 177871
Patch

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

Overall lgtm...

&gt; Source/WebKit/chromium/ChangeLog:-360
&gt; -2012-11-30  David Grogan  &lt;dgrogan@chromium.org&gt;

Automatic merge glitch?

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:125
&gt; +WARN_UNUSED_RETURN static bool getVarInt(DBOrTransaction* db, const LevelDBSlice&amp; key, int64_t&amp; foundInt, bool&amp; found)

Just curious - is this placement required for implementations? In forward/class declarations I&apos;ve seen it after the (), although it looks like you used it as a prefix in IDBObjectStoreBackendImpl.cpp.

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:373
&gt; +    found = getInt(m_db.get(), key, metadata-&gt;id);

getInt() will get the found-vs.-error treatment in a later patch?

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:382
&gt; +    ASSERT(found);

Would !found would indicate a coding consistency error, correct? That is, LevelDB didn&apos;t report an error but the metadata was malformed? Should that be an InternalError as well, just a different type?

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:389
&gt; +    ASSERT(found);

Ditto. (This could e.g. indicate a problem with the schema migration code.)

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:641
&gt; +    bool ok = getString(levelDBTransaction, ObjectStoreMetaDataKey::encode(databaseId, objectStoreId, ObjectStoreMetaDataKey::Name), objectStoreName, found);

Add an ASSERT(found) and/or InternalError if !found?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784366</commentid>
    <comment_count>9</comment_count>
      <attachid>177871</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-05 17:50:42 -0800</bug_when>
    <thetext>Comment on attachment 177871
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.h:55
&gt; +    virtual bool getIDBDatabaseMetaData(const String&amp; name, IDBDatabaseMetadata*, bool&amp; success) WARN_UNUSED_RETURN;

Oops, also meant to say:

Probably too late now, but I wonder if &quot;typedef bool BackingStoreSuccess;&quot; would improve readability for these headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784491</commentid>
    <comment_count>10</comment_count>
      <attachid>177871</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-05 19:14:43 -0800</bug_when>
    <thetext>Comment on attachment 177871
Patch

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:-360
&gt;&gt; -2012-11-30  David Grogan  &lt;dgrogan@chromium.org&gt;
&gt; 
&gt; Automatic merge glitch?

There was the other day, I&apos;m retroactively correcting it here. *shrug*

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:125
&gt;&gt; +WARN_UNUSED_RETURN static bool getVarInt(DBOrTransaction* db, const LevelDBSlice&amp; key, int64_t&amp; foundInt, bool&amp; found)
&gt; 
&gt; Just curious - is this placement required for implementations? In forward/class declarations I&apos;ve seen it after the (), although it looks like you used it as a prefix in IDBObjectStoreBackendImpl.cpp.

In class method declarations it definitely goes after the (). In non-static standalone functions it also goes after the (). For some reason in static functions it goes in the beginning.  Take this with a grain of salt though, it was obtained through trial and error.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:373
&gt;&gt; +    found = getInt(m_db.get(), key, metadata-&gt;id);
&gt; 
&gt; getInt() will get the found-vs.-error treatment in a later patch?

Yep. It&apos;s the last place that drops errors that I know of. Once its callers are updated, this work is done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:382
&gt;&gt; +    ASSERT(found);
&gt; 
&gt; Would !found would indicate a coding consistency error, correct? That is, LevelDB didn&apos;t report an error but the metadata was malformed? Should that be an InternalError as well, just a different type?

For getString, I think it can only mean that the key wasn&apos;t found.  For getVarInt you&apos;re right, it could indicate an encoding error as well.

I had wanted the return value to indicate that leveldb reported an error, so !found shouldn&apos;t cause a |return false|. But after thinking about it, a different InternalError along with a return false would probably be best.  We don&apos;t want release mode to proceed in the (ok &amp;&amp; !found) case, we want an abort.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:389
&gt;&gt; +    ASSERT(found);
&gt; 
&gt; Ditto. (This could e.g. indicate a problem with the schema migration code.)

Good point. Yeah, will change back.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.cpp:641
&gt;&gt; +    bool ok = getString(levelDBTransaction, ObjectStoreMetaDataKey::encode(databaseId, objectStoreId, ObjectStoreMetaDataKey::Name), objectStoreName, found);
&gt; 
&gt; Add an ASSERT(found) and/or InternalError if !found?

Oops. Will add.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.h:55
&gt;&gt; +    virtual bool getIDBDatabaseMetaData(const String&amp; name, IDBDatabaseMetadata*, bool&amp; success) WARN_UNUSED_RETURN;
&gt; 
&gt; Oops, also meant to say:
&gt; 
&gt; Probably too late now, but I wonder if &quot;typedef bool BackingStoreSuccess;&quot; would improve readability for these headers.

I like that idea. Seems like a patch that could be easily slipped whenever (so, not too late).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785128</commentid>
    <comment_count>11</comment_count>
      <attachid>178055</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-06 12:06:54 -0800</bug_when>
    <thetext>Created attachment 178055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785130</commentid>
    <comment_count>12</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-06 12:08:09 -0800</bug_when>
    <thetext>Now with more aborting per Josh&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785286</commentid>
    <comment_count>13</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-06 14:34:08 -0800</bug_when>
    <thetext>Tony, could you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785315</commentid>
    <comment_count>14</comment_count>
      <attachid>178055</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-06 14:57:22 -0800</bug_when>
    <thetext>Comment on attachment 178055
Patch

Clearing flags on attachment: 178055

Committed r136897: &lt;http://trac.webkit.org/changeset/136897&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785316</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-06 14:57:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177399</attachid>
            <date>2012-12-03 20:05:05 -0800</date>
            <delta_ts>2012-12-04 16:04:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103964-20121203200231.patch</filename>
            <type>text/plain</type>
            <size>10503</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QxNzA1ZDAwZjMyNTU2
NGJjZGJiNzBhMWIxYzJjNDc0MTk4ZDM0ZS4uNWViYzQzOWQ5ZjNmZWQwNDNkOTZjMDM1ZWM1ZTAx
OGNhZDliYjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDEyLTEyLTAzICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWJvcnQgYSB2ZXJzaW9u
IGNoYW5nZSB0cmFuc2FjdGlvbiBpZiBsZXZlbGRiIHRocm93cyBhbiBlcnJvciB3aGlsZQorICAg
ICAgICBkZWxldGluZyBhbiBvYmplY3Qgc3RvcmUuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmFySW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNr
aW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURC
QmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVP
cGVyYXRpb246OnBlcmZvcm0pOgorCisyMDEyLTEyLTAzICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2Fu
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBJbmRleGVkREI6IEFib3J0IHRyYW5zYWN0aW9ucyBi
ZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgMwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTYwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZGU5NjA4MTBkYTkzMGU1MzY1MWQ2NGQ1MDU2ZTFmNmMzOTg0MGI4ZC4uY2RkNzVmODZj
MTNkY2FlNzBhZmI1OGFhMjQ1NDE3MWVmYWFjMjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMi0wMyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBYm9ydCB0cmFuc2FjdGlvbnMgYmVj
YXVzZSBvZiBsZXZlbGRiIGVycm9ycyBwYXJ0IDQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oOgorICAg
ICAgICAgIFVudXNlZCBvdmVycmlkZGVuIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIGRpZG4ndCBtYXRj
aCwganVzdCByZW1vdmUgaXQuCisKIDIwMTItMTEtMzAgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogUHJvcGFnYXRlIG1vcmUgbGV2ZWxk
YiBlcnJvcnMgdG8gSURCSW5kZXggYW5kIElEQk9iamVjdFN0b3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBlNmVi
NmU5OTE4OGI2NjUwMmUzZjJkZmI0YmNjMjk4NjI5OGY4YmJjLi42YmY2OGZkYWQ3Y2EwNzY3YTk3
MGI5YWM2ODEwYmI1YjA1MGFhOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBJ
REJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJvclR5cGUgewogICAgIElEQkxldmVsREJC
YWNraW5nU3RvcmVSZWFkRXJyb3JHZXRQcmltYXJ5S2V5VmlhSW5kZXgsCiAgICAgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZVJlYWRFcnJvcktleUV4aXN0c0luSW5kZXgsCiAgICAgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVJlYWRFcnJvclZlcnNpb25FeGlzdHMsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVJlYWRFcnJvckRlbGV0ZU9iamVjdFN0b3JlLAogICAgIElEQkxldmVsREJCYWNraW5nU3Rv
cmVJbnRlcm5hbEVycm9yTWF4LAogfTsKIHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRJbnRlcm5h
bEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVJbnRlcm5hbEVycm9yVHlwZSB0eXBlKQpAQCAt
MTIxLDE3ICsxMjIsMTcgQEAgc3RhdGljIHZvaWQgcHV0SW50KExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBpbnQKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBib29sIGdldFZhckludChEQk9yVHJh
bnNhY3Rpb24qIGRiLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCYgZm91bmRJbnQp
CitzdGF0aWMgYm9vbCBnZXRWYXJJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIGludDY0X3QmIGZvdW5kSW50LCBib29sJiBmb3VuZCkKIHsKICAgICBWZWN0
b3I8Y2hhcj4gcmVzdWx0OwotICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICBib29sIG9rID0g
ZGItPnNhZmVHZXQoa2V5LCByZXN1bHQsIGZvdW5kKTsKLSAgICAvLyBGSVhNRTogTm90aWZ5IHRo
ZSBjYWxsZXIgaWYgIW9rLgotICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICBpZiAoIWZv
dW5kKQorICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWZvdW5k
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBkZWNvZGVWYXJJbnQocmVzdWx0
LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgZm91bmRJbnQpID09IHJlc3VsdC5lbmQoKTsKKyAgICBm
b3VuZCA9IGRlY29kZVZhckludChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBmb3VuZElu
dCkgPT0gcmVzdWx0LmVuZCgpOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBw
dXRWYXJJbnQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNs
aWNlJiBrZXksIGludDY0X3QgdmFsdWUpCkBAIC0xNDAsMTUgKzE0MSwxNSBAQCBzdGF0aWMgdm9p
ZCBwdXRWYXJJbnQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1z
dGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNs
aWNlJiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcpCitzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJP
clRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFN0cmluZyYgZm91bmRT
dHJpbmcsIGJvb2wmIGZvdW5kKQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgYm9v
bCBmb3VuZCA9IGZhbHNlOworICAgIGZvdW5kID0gZmFsc2U7CiAgICAgYm9vbCBvayA9IGRiLT5z
YWZlR2V0KGtleSwgcmVzdWx0LCBmb3VuZCk7Ci0gICAgLy8gRklYTUU6IE5vdGlmeSB0aGUgY2Fs
bGVyIGlmICFvay4KLSAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0gICAgaWYgKCFmb3VuZCkK
KyAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFmb3VuZCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3VuZFN0cmluZyA9IGRlY29kZVN0cmluZyhyZXN1
bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3MiwxNCAr
MzczLDE1IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhCiAgICAgaWYgKCFvaykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNl
clZlcnNpb24pLCBtZXRhZGF0YS0+dmVyc2lvbik7Ci0gICAgaWYgKCFvaykgeworICAgIGJvb2wg
Zm91bmQgPSBmYWxzZTsKKyAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1l
dGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2Vy
VmVyc2lvbiksIG1ldGFkYXRhLT52ZXJzaW9uLCBmb3VuZCk7CisgICAgaWYgKCFvayB8fCAhZm91
bmQpIHsKICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVy
cm9yR2V0SURCRGF0YWJhc2VNZXRhRGF0YSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBvayA9IGdldFZhckludChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpl
bmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiks
IG1ldGFkYXRhLT5pbnRWZXJzaW9uKTsKLSAgICBpZiAoIW9rKSB7CisgICAgb2sgPSBnZXRWYXJJ
bnQobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwg
RGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBtZXRhZGF0YS0+aW50VmVyc2lv
biwgZm91bmQpOworICAgIGlmICghb2sgfHwgIWZvdW5kKSB7CiAgICAgICAgIEludGVybmFsRXJy
b3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldElEQkRhdGFiYXNlTWV0YURhdGEp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNjIyLDEzICs2MjQsMTggQEAgYm9v
bCBJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkK
K2Jvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9i
amVjdFN0b3JlIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24g
PSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRy
YW5zYWN0aW9uKTsKIAogICAgIFN0cmluZyBvYmplY3RTdG9yZU5hbWU7Ci0gICAgZ2V0U3RyaW5n
KGxldmVsREJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok5hbWUpLCBvYmpl
Y3RTdG9yZU5hbWUpOworICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICBib29sIG9rID0gZ2V0
U3RyaW5nKGxldmVsREJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok5hbWUp
LCBvYmplY3RTdG9yZU5hbWUsIGZvdW5kKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIEludGVy
bmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckRlbGV0ZU9iamVjdFN0b3Jl
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGRlbGV0ZVJhbmdlKGxldmVs
REJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIDApLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXko
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpOwogCkBAIC02MzgsNiArNjQ1LDcgQEAgdm9pZCBJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW8KICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIElu
ZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwLCAwKSwg
SW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQp
KTsKIAogICAgIGNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIElEQkJhY2tpbmdTdG9yZTo6
Z2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiBrZXks
IFN0cmluZyYgcmVjb3JkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJCYWNraW5nU3RvcmUuaAppbmRleCA4Y2Y0YzBhMzhkN2JmMWM2ZDIyZjkxNTI2N2E0OTUw
ODZmNjhiMjE0Li44NjQzOWQ2NmU3ZTAzZWViMmM5OTE2OWVkZjQ0NjUwZDAyZTFjNzJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUu
aApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhPiBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkKTsKICAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwotICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOworICAgIHZp
cnR1YWwgYm9vbCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIFdBUk5fVU5VU0VE
X1JFVFVSTjsKIAogICAgIGNsYXNzIFJlY29yZElkZW50aWZpZXIgewogICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShSZWNvcmRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5k
ZXggNDYzODg3NzY0YjU3ZGUzNmQ1ZDlkMTdiZGMzZGY5NDhmNGFjNTk1ZC4uMjgwMjUyNzIzNmJk
MmYwNWI2N2U5OTBlODhhOWZmOTk1ZGQwYzQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAg
LTI2NSw3ICsyNjUsMTEgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmpl
Y3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQKIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0
YWJhc2UsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUs
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAg
ICAgSURCX1RSQUNFKCJEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwotICAgIGRhdGFiYXNl
LT5tX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlLT5pZCgpLCBvYmplY3RTdG9yZS0+aWQoKSk7Cisg
ICAgYm9vbCBvayA9IGRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUo
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlLT5pZCgpLCBv
YmplY3RTdG9yZS0+aWQoKSk7CisgICAgaWYgKCFvaykgeworICAgICAgICBSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIGRlbGV0aW5nIG9iamVjdCBz
dG9yZS4iKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKKyAgICB9CiB9CiAK
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVy
Zm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFz
ZUNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2Fj
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2lu
Z1N0b3JlLmgKaW5kZXggNTVmZjViOGQwYTk4MTM4MzUwNjk3OWIzZmE0NzgxYmYwY2RiYWEzYS4u
NTYwNmI4YjFiMmJlNTM0ODJiMDExODllN2FkNjhhMzQzMWExNjM0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKQEAgLTQxLDcg
KzQxLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBWZWN0b3I8SURCT2JqZWN0U3RvcmVNZXRh
ZGF0YT4gZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCkgT1ZFUlJJREUgeyByZXR1
cm4gVmVjdG9yPElEQk9iamVjdFN0b3JlTWV0YWRhdGE+KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wg
Y3JlYXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwg
Ym9vbCBhdXRvSW5jcmVtZW50KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcHV0UmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElk
ZW50aWZpZXIqKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9y
ZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KSBPVkVSUklERSB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177593</attachid>
            <date>2012-12-04 16:04:04 -0800</date>
            <delta_ts>2012-12-04 19:05:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103964-20121204160130.patch</filename>
            <type>text/plain</type>
            <size>13840</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q2MjBhNDk0YTQxY2Y1
NjhkOGY3YmYyYTc1NzVmODlmNWQ1MmJiOS4uMmVmNDlkNmJjNDY0ZGU4NTkxNGM0YzU2MjNiYmM2
ODBhZDRjYjA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDEyLTEyLTAzICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWJvcnQgYSB2ZXJzaW9u
IGNoYW5nZSB0cmFuc2FjdGlvbiBpZiBsZXZlbGRiIHRocm93cyBhbiBlcnJvciB3aGlsZQorICAg
ICAgICBkZWxldGluZyBhbiBvYmplY3Qgc3RvcmUuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmFySW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNr
aW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURC
QmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVP
cGVyYXRpb246OnBlcmZvcm0pOgorCisyMDEyLTEyLTAzICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2Fu
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBJbmRleGVkREI6IEFib3J0IHRyYW5zYWN0aW9ucyBi
ZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgMwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTYwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggMzk2ZmIzYzhjZjgwZGMyOTcwNWJiNjgzZjk2NDBhZjQwNDEwNjY2OS4uYmQxNThmNjg0
MGMyN2I0YTU5OWNmZDViYmM3MmY1ZDQ2NDM1NjQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMi0wMyAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBYm9ydCB0cmFuc2FjdGlvbnMgYmVj
YXVzZSBvZiBsZXZlbGRiIGVycm9ycyBwYXJ0IDQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oOgorICAg
ICAgICAgIFVudXNlZCBvdmVycmlkZGVuIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIGRpZG4ndCBtYXRj
aCwganVzdCByZW1vdmUgaXQuCisKIDIwMTItMTEtMzAgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogUHJvcGFnYXRlIG1vcmUgbGV2ZWxk
YiBlcnJvcnMgdG8gSURCSW5kZXggYW5kIElEQk9iamVjdFN0b3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBlNmVi
NmU5OTE4OGI2NjUwMmUzZjJkZmI0YmNjMjk4NjI5OGY4YmJjLi4xNDhmZTZhZjA5N2NlZWNlZjY3
YWIyODY0M2E0ZjMwNTBlMDU0MDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgZW51bSBJ
REJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJvclR5cGUgewogICAgIElEQkxldmVsREJC
YWNraW5nU3RvcmVSZWFkRXJyb3JHZXRQcmltYXJ5S2V5VmlhSW5kZXgsCiAgICAgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZVJlYWRFcnJvcktleUV4aXN0c0luSW5kZXgsCiAgICAgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVJlYWRFcnJvclZlcnNpb25FeGlzdHMsCisgICAgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZVJlYWRFcnJvckRlbGV0ZU9iamVjdFN0b3JlLAogICAgIElEQkxldmVsREJCYWNraW5nU3Rv
cmVJbnRlcm5hbEVycm9yTWF4LAogfTsKIHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRJbnRlcm5h
bEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVJbnRlcm5hbEVycm9yVHlwZSB0eXBlKQpAQCAt
MTIxLDE3ICsxMjIsMTcgQEAgc3RhdGljIHZvaWQgcHV0SW50KExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBpbnQKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBib29sIGdldFZhckludChEQk9yVHJh
bnNhY3Rpb24qIGRiLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCYgZm91bmRJbnQp
CitzdGF0aWMgYm9vbCBnZXRWYXJJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIGludDY0X3QmIGZvdW5kSW50LCBib29sJiBmb3VuZCkKIHsKICAgICBWZWN0
b3I8Y2hhcj4gcmVzdWx0OwotICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICBib29sIG9rID0g
ZGItPnNhZmVHZXQoa2V5LCByZXN1bHQsIGZvdW5kKTsKLSAgICAvLyBGSVhNRTogTm90aWZ5IHRo
ZSBjYWxsZXIgaWYgIW9rLgotICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICBpZiAoIWZv
dW5kKQorICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWZvdW5k
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBkZWNvZGVWYXJJbnQocmVzdWx0
LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgZm91bmRJbnQpID09IHJlc3VsdC5lbmQoKTsKKyAgICBm
b3VuZCA9IGRlY29kZVZhckludChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBmb3VuZElu
dCkgPT0gcmVzdWx0LmVuZCgpOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBw
dXRWYXJJbnQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNs
aWNlJiBrZXksIGludDY0X3QgdmFsdWUpCkBAIC0xNDAsMTUgKzE0MSwxNSBAQCBzdGF0aWMgdm9p
ZCBwdXRWYXJJbnQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1z
dGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNs
aWNlJiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcpCitzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJP
clRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFN0cmluZyYgZm91bmRT
dHJpbmcsIGJvb2wmIGZvdW5kKQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgYm9v
bCBmb3VuZCA9IGZhbHNlOworICAgIGZvdW5kID0gZmFsc2U7CiAgICAgYm9vbCBvayA9IGRiLT5z
YWZlR2V0KGtleSwgcmVzdWx0LCBmb3VuZCk7Ci0gICAgLy8gRklYTUU6IE5vdGlmeSB0aGUgY2Fs
bGVyIGlmICFvay4KLSAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0gICAgaWYgKCFmb3VuZCkK
KyAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFmb3VuZCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3VuZFN0cmluZyA9IGRlY29kZVN0cmluZyhyZXN1
bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM2NCwyNSAr
MzY1LDI5IEBAIFZlY3RvcjxTdHJpbmc+IElEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1l
cygpCiAgICAgcmV0dXJuIGZvdW5kTmFtZXM7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRh
ZGF0YSogbWV0YWRhdGEpCitib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRh
RGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqIG1ldGFkYXRhLCBi
b29sJiBmb3VuZCkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1l
S2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKKyAgICBmb3VuZCA9IGZhbHNlOwogCi0g
ICAgYm9vbCBvayA9IGdldEludChtX2RiLmdldCgpLCBrZXksIG1ldGFkYXRhLT5pZCk7Ci0gICAg
aWYgKCFvaykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvdW5kID0gZ2V0SW50KG1fZGIu
Z2V0KCksIGtleSwgbWV0YWRhdGEtPmlkKTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURh
dGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJz
aW9uKSwgbWV0YWRhdGEtPnZlcnNpb24pOworICAgIGJvb2wgb2sgPSBnZXRTdHJpbmcobV9kYi5n
ZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCBtZXRhZGF0YS0+dmVyc2lvbiwgZm91bmQpOwogICAg
IGlmICghb2spIHsKICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3Jl
UmVhZEVycm9yR2V0SURCRGF0YWJhc2VNZXRhRGF0YSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CisgICAgQVNTRVJUKGZvdW5kKTsKIAotICAgIG9rID0gZ2V0VmFySW50KG1fZGIuZ2V0
KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0
YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgbWV0YWRhdGEtPmludFZlcnNpb24pOworICAgIG9r
ID0gZ2V0VmFySW50KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRh
ZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgbWV0YWRhdGEt
PmludFZlcnNpb24sIGZvdW5kKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIEludGVybmFsRXJy
b3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldElEQkRhdGFiYXNlTWV0YURhdGEp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIEFTU0VSVChmb3VuZCk7CisKICAg
ICBpZiAobWV0YWRhdGEtPmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVs
dEludFZlcnNpb24pCiAgICAgICAgIG1ldGFkYXRhLT5pbnRWZXJzaW9uID0gSURCRGF0YWJhc2VN
ZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwogCkBAIC00NTksNyArNDY0LDExIEBAIGJvb2wgSURCQmFj
a2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgT3duUHRy
PExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCV3JpdGVP
bmx5VHJhbnNhY3Rpb246OmNyZWF0ZShtX2RiLmdldCgpKTsKIAogICAgIElEQkRhdGFiYXNlTWV0
YWRhdGEgbWV0YWRhdGE7Ci0gICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsICZt
ZXRhZGF0YSkpCisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgYm9vbCBvayA9IGdldElE
QkRhdGFiYXNlTWV0YURhdGEobmFtZSwgJm1ldGFkYXRhLCBzdWNjZXNzKTsKKyAgICAvLyBGSVhN
RTogUHJvcGFnYXRlIHRoaXMgdXAuCisgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOworICAgIGlm
ICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gc3RhcnRLZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEuaWQsIERh
dGFiYXNlTWV0YURhdGFLZXk6Ok9yaWdpbk5hbWUpOwpAQCAtNjIyLDEzICs2MzEsMTggQEAgYm9v
bCBJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkK
K2Jvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9i
amVjdFN0b3JlIik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24g
PSBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRy
YW5zYWN0aW9uKTsKIAogICAgIFN0cmluZyBvYmplY3RTdG9yZU5hbWU7Ci0gICAgZ2V0U3RyaW5n
KGxldmVsREJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok5hbWUpLCBvYmpl
Y3RTdG9yZU5hbWUpOworICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICBib29sIG9rID0gZ2V0
U3RyaW5nKGxldmVsREJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok5hbWUp
LCBvYmplY3RTdG9yZU5hbWUsIGZvdW5kKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIEludGVy
bmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckRlbGV0ZU9iamVjdFN0b3Jl
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGRlbGV0ZVJhbmdlKGxldmVs
REJUcmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIDApLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXko
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpOwogCkBAIC02MzgsNiArNjUyLDcgQEAgdm9pZCBJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW8KICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIElu
ZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwLCAwKSwg
SW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQp
KTsKIAogICAgIGNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIElEQkJhY2tpbmdTdG9yZTo6
Z2V0UmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiBrZXks
IFN0cmluZyYgcmVjb3JkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJCYWNraW5nU3RvcmUuaAppbmRleCA4Y2Y0YzBhMzhkN2JmMWM2ZDIyZjkxNTI2N2E0OTUw
ODZmNjhiMjE0Li40ODQyMDlmNGEzMzhjZTFmMDg1ZTE3MDc2ZGY0NGEyMDFlNGRlMDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBvcGVuKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwg
Y29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKik7CiAK
ICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGdldERhdGFiYXNlTmFtZXMoKTsKLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRh
dGFiYXNlTWV0YWRhdGEqKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqLCBib29sJiBzdWNjZXNz
KTsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2
NF90JiByb3dJZCk7CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lv
bihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgaW50NjRfdCBp
bnRWZXJzaW9uKTsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBWZWN0
b3I8SURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJh
c2VJZCk7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVt
ZW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBX
QVJOX1VOVVNFRF9SRVRVUk47CiAKICAgICBjbGFzcyBSZWNvcmRJZGVudGlmaWVyIHsKICAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCmluZGV4IDQ2Mzg4Nzc2NGI1N2RlMzZkNWQ5ZDE3YmRjM2RmOTQ4ZjRhYzU5NWQuLjY3
NTc4ZTNhMjJhMTljYjY1YTNkMmFkMjY0ZmI1M2M0YmU3MThmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCkBAIC0xODMsNyArMTgzLDEwIEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRh
dGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAKIGJv
b2wgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKCkKIHsKLSAgICBib29sIHN1
Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShtX21ldGFkYXRh
Lm5hbWUsICZtX21ldGFkYXRhKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBib29s
IG9rID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9tZXRhZGF0YS5u
YW1lLCAmbV9tZXRhZGF0YSwgc3VjY2Vzcyk7CisgICAgLy8gRklYTUU6IFByb3BhZ2F0ZSB0aGlz
IHVwLgorICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KHN1Y2Nlc3MgPT0gKG1fbWV0YWRhdGEuaWQgIT0gSW52YWxpZElkKSwgInN1Y2Nlc3MgPSAlcywg
bV9pZCA9ICVsbGQiLCBzdWNjZXNzID8gInRydWUiIDogImZhbHNlIiwgc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPihtX21ldGFkYXRhLmlkKSk7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgbG9h
ZE9iamVjdFN0b3JlcygpOwpAQCAtMjY1LDcgKzI2OCwxMSBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpEZWxldGVPYmplY3RTdG9yZU9wZXJh
dGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0
aW9uIik7Ci0gICAgZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZSh0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2UtPmlkKCksIG9i
amVjdFN0b3JlLT5pZCgpKTsKKyAgICBib29sIG9rID0gZGF0YWJhc2UtPm1fYmFja2luZ1N0b3Jl
LT5kZWxldGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwgZGF0YWJhc2UtPmlkKCksIG9iamVjdFN0b3JlLT5pZCgpKTsKKyAgICBpZiAoIW9rKSB7Cisg
ICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJy
b3IgZGVsZXRpbmcgb2JqZWN0IHN0b3JlLiIpOworICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQo
ZXJyb3IpOworICAgIH0KIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9u
Q2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBpbnQ2NF90IHZlcnNpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRleCA1NWZmNWI4ZDBhOTgxMzgzNTA2OTc5
YjNmYTQ3ODFiZjBjZGJhYTNhLi45YjE3YWRkMTE1OTdhMzFhMmJkNWRlN2QyYTg4NGFiZTFlNjEy
NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNr
aW5nU3RvcmUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
REJGYWtlQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXREYXRhYmFzZU5hbWVzKCkgT1ZFUlJJREUgeyBy
ZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFz
ZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSopIE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0
YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKiwgYm9vbCYgZm91
bmQpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURC
RGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKFRyYW5z
YWN0aW9uKiwgaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZl
cnNpb24oVHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IHZlcnNpb24pIE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgVmVjdG9yPElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IGdldE9iamVjdFN0b3JlcyhpbnQ2
NF90IGRhdGFiYXNlSWQpIE9WRVJSSURFIHsgcmV0dXJuIFZlY3RvcjxJREJPYmplY3RTdG9yZU1l
dGFkYXRhPigpOyB9CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCkgT1ZFUlJJ
REUgeyByZXR1cm4gZmFsc2U7IH07Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3Jl
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQp
IE9WRVJSSURFIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHB1dFJlY29yZChUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177648</attachid>
            <date>2012-12-04 19:05:57 -0800</date>
            <delta_ts>2012-12-04 19:28:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103964-20121204190322.patch</filename>
            <type>text/plain</type>
            <size>14525</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUxYTc0YjI5ZmNlMTg1
MzM1MTFkOTE5MjFmZjRkOTM0MmFkZGFkNS4uZTAxZWM2MmVlNmFhMzRmODRiYmU4NzMzZjhiNGYz
OWQ2YmFhZDlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTEyLTA0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmFySW50KTog
TWFrZSByZXR1cm4gdmFsdWUgaW5kaWNhdGUgbGV2ZWxkYiBlcnJvci4KKyAgICAgICAgKFdlYkNv
cmU6OmdldFN0cmluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
OjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgQ2hhbmdlIHJldHVybiB2YWx1ZSB0
byBpbmRpY2F0ZSBsZXZlbGRiIGVycm9yLgorCisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5n
U3RvcmU6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgQWxyZWFkeSBoYWQgdGhlIGRlc2lyZWQg
cmV0dXJuIHZhbHVlIHNlbWFudGljcy4gQXMgYSBjb25zdW1lciBvZgorICAgICAgICBnZXRJREJE
YXRhYmFzZU1ldGFkYXRhLCB3aWxsIHJldHVybiBhbiBlcnJvciAoY2F1c2luZyBhbiBhYm9ydCkg
bW9yZQorICAgICAgICBvZnRlbi4KKworICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
OjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIE5lZWRlZCByZXR1cm4gdmFsdWUgY2hhbmdl
LiBXaWxsIHJldHVybiBlcnJvciB0byBEYXRhYmFzZUJhY2tlbmQgdG8KKyAgICAgICAgaW5kaWNh
dGUgbGV2ZWxkYiBwcm9ibGVtcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIFBhc3Mg
bGV2ZWxkYiBlcnJvcnMgdXAgdG8gY2FsbGVycywgd2hvIGFscmVhZHkgaGFuZGxlIGludGVybmFs
IGVycm9ycy4KKworICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVs
ZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICBBYm9ydCB0cmFuc2Fj
dGlvbiBpZiB0aGVyZSB3ZXJlIGxldmVsZGIgcHJvYmxlbXMgZGVsZXRpbmcgYW4gb2JqZWN0Cisg
ICAgICAgIHN0b3JlLgorCiAyMDEyLTEyLTAzICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IEFib3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNl
IG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAx
MTBiYzkwZmNiZDhkMWRiN2Y0MTUyYWVhNjAyYjAwNWNlNWVjODczLi45OGY2OGM1NzZhODE3OWE0
MzFkMDY2Y2FlYWE3NDBhZjNiNTQ3NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwxMCArMSwyMCBAQAorMjAxMi0xMi0wNCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBYm9ydCB0cmFuc2FjdGlvbnMgYmVjYXVzZSBv
ZiBsZXZlbGRiIGVycm9ycyBwYXJ0IDQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMzk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAg
IFVwZGF0ZSBvbmUgb3ZlcnJpZGRlbiBtZXRob2Qgc2lnbmF0dXJlLCBkZWxldGUgYW5vdGhlci4K
KwogMjAxMi0xMi0wNCAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCiAKICAgICAgICAgKiBERVBTOgog
Ci0yMDEyLTExLTMwICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKzIwMTIt
MTItMDQgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIElu
ZGV4ZWREQjogUHJvcGFnYXRlIG1vcmUgbGV2ZWxkYiBlcnJvcnMgdG8gSURCSW5kZXggYW5kIElE
Qk9iamVjdFN0b3JlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDM3ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGI3NjE1N2U2NGU2NzVkMzFiYWM1MDdmODhmODJjNWY4
ZGUyODA0NTMuLjU0YTlkZTA5ODlmZTQ3N2EwZWQwNTYxMTJkODVjOTJmMjQ1ZmZhNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcApAQCAtNjcsNiArNjcsNyBAQCBlbnVtIElEQkxldmVsREJCYWNraW5nU3RvcmVJbnRlcm5h
bEVycm9yVHlwZSB7CiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldFByaW1h
cnlLZXlWaWFJbmRleCwKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yS2V5RXhp
c3RzSW5JbmRleCwKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yVmVyc2lvbkV4
aXN0cywKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yRGVsZXRlT2JqZWN0U3Rv
cmUsCiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUludGVybmFsRXJyb3JNYXgsCiB9Owogc3Rh
dGljIGlubGluZSB2b2lkIHJlY29yZEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZUludGVybmFsRXJyb3JUeXBlIHR5cGUpCkBAIC0xMjEsMTcgKzEyMiwxNyBAQCBzdGF0aWMgdm9p
ZCBwdXRJbnQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNs
aWNlJiBrZXksIGludAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgot
c3RhdGljIGJvb2wgZ2V0VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IExldmVsREJT
bGljZSYga2V5LCBpbnQ2NF90JiBmb3VuZEludCkKK3N0YXRpYyBib29sIGdldFZhckludChEQk9y
VHJhbnNhY3Rpb24qIGRiLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCYgZm91bmRJ
bnQsIGJvb2wmIGZvdW5kKQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgYm9vbCBm
b3VuZCA9IGZhbHNlOwogICAgIGJvb2wgb2sgPSBkYi0+c2FmZUdldChrZXksIHJlc3VsdCwgZm91
bmQpOwotICAgIC8vIEZJWE1FOiBOb3RpZnkgdGhlIGNhbGxlciBpZiAhb2suCi0gICAgQVNTRVJU
X1VOVVNFRChvaywgb2spOwotICAgIGlmICghZm91bmQpCisgICAgaWYgKCFvaykKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgcmV0dXJuIGRlY29kZVZhckludChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBmb3Vu
ZEludCkgPT0gcmVzdWx0LmVuZCgpOworICAgIGZvdW5kID0gZGVjb2RlVmFySW50KHJlc3VsdC5i
ZWdpbigpLCByZXN1bHQuZW5kKCksIGZvdW5kSW50KSA9PSByZXN1bHQuZW5kKCk7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIHB1dFZhckludChMZXZlbERCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCB2YWx1ZSkKQEAg
LTE0MCwxNSArMTQxLDE1IEBAIHN0YXRpYyB2b2lkIHB1dFZhckludChMZXZlbERCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBib29sIGdldFN0cmluZyhEQk9yVHJh
bnNhY3Rpb24qIGRiLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgU3RyaW5nJiBmb3VuZFN0cmlu
ZykKK3N0YXRpYyBib29sIGdldFN0cmluZyhEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBMZXZl
bERCU2xpY2UmIGtleSwgU3RyaW5nJiBmb3VuZFN0cmluZywgYm9vbCYgZm91bmQpCiB7CiAgICAg
VmVjdG9yPGNoYXI+IHJlc3VsdDsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgZm91bmQg
PSBmYWxzZTsKICAgICBib29sIG9rID0gZGItPnNhZmVHZXQoa2V5LCByZXN1bHQsIGZvdW5kKTsK
LSAgICAvLyBGSVhNRTogTm90aWZ5IHRoZSBjYWxsZXIgaWYgIW9rLgotICAgIEFTU0VSVF9VTlVT
RUQob2ssIG9rKTsKLSAgICBpZiAoIWZvdW5kKQorICAgIGlmICghb2spCiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGZv
dW5kU3RyaW5nID0gZGVjb2RlU3RyaW5nKHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCkpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMzY0LDI1ICszNjUsMjkgQEAgVmVjdG9yPFN0cmluZz4gSURC
QmFja2luZ1N0b3JlOjpnZXREYXRhYmFzZU5hbWVzKCkKICAgICByZXR1cm4gZm91bmROYW1lczsK
IH0KIAotYm9vbCBJREJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKiBtZXRhZGF0YSkKK2Jvb2wgSURCQmFj
a2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURC
RGF0YWJhc2VNZXRhZGF0YSogbWV0YWRhdGEsIGJvb2wmIGZvdW5kKQogewogICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiBrZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShtX2lkZW50aWZpZXIsIG5h
bWUpOworICAgIGZvdW5kID0gZmFsc2U7CiAKLSAgICBib29sIG9rID0gZ2V0SW50KG1fZGIuZ2V0
KCksIGtleSwgbWV0YWRhdGEtPmlkKTsKLSAgICBpZiAoIW9rKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgZm91bmQgPSBnZXRJbnQobV9kYi5nZXQoKSwga2V5LCBtZXRhZGF0YS0+aWQpOwor
ICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgb2sgPSBnZXRTdHJp
bmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwg
RGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCBtZXRhZGF0YS0+dmVyc2lvbik7Cisg
ICAgYm9vbCBvayA9IGdldFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpl
bmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIG1l
dGFkYXRhLT52ZXJzaW9uLCBmb3VuZCk7CiAgICAgaWYgKCFvaykgewogICAgICAgICBJbnRlcm5h
bEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JHZXRJREJEYXRhYmFzZU1ldGFE
YXRhKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICBBU1NFUlQoZm91bmQpOwog
Ci0gICAgb2sgPSBnZXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5j
b2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBt
ZXRhZGF0YS0+aW50VmVyc2lvbik7CisgICAgb2sgPSBnZXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0
YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtl
eTo6VXNlckludFZlcnNpb24pLCBtZXRhZGF0YS0+aW50VmVyc2lvbiwgZm91bmQpOwogICAgIGlm
ICghb2spIHsKICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVh
ZEVycm9yR2V0SURCRGF0YWJhc2VNZXRhRGF0YSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CisgICAgQVNTRVJUKGZvdW5kKTsKKwogICAgIGlmIChtZXRhZGF0YS0+aW50VmVyc2lvbiA9
PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbikKICAgICAgICAgbWV0YWRh
dGEtPmludFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CiAKQEAg
LTQ1OSw3ICs0NjQsMTEgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICBPd25QdHI8TGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9u
PiB0cmFuc2FjdGlvbiA9IExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6Y3JlYXRlKG1fZGIu
Z2V0KCkpOwogCiAgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBpZiAoIWdl
dElEQkRhdGFiYXNlTWV0YURhdGEobmFtZSwgJm1ldGFkYXRhKSkKKyAgICBib29sIHN1Y2Nlc3Mg
PSBmYWxzZTsKKyAgICBib29sIG9rID0gZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1lLCAmbWV0
YWRhdGEsIHN1Y2Nlc3MpOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+IHN0YXJ0S2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLmlk
LCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpPcmlnaW5OYW1lKTsKQEAgLTYyMiwxMyArNjMxLDE4IEBA
IGJvb2wgSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSURC
QmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpCitib29sIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0
b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkKQogewogICAgIElEQl9UUkFDRSgiSURCQmFja2luZ1N0b3JlOjpkZWxl
dGVPYmplY3RTdG9yZSIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0
aW9uID0gSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJv
bSh0cmFuc2FjdGlvbik7CiAKICAgICBTdHJpbmcgb2JqZWN0U3RvcmVOYW1lOwotICAgIGdldFN0
cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpOYW1lKSwg
b2JqZWN0U3RvcmVOYW1lKTsKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgYm9vbCBvayA9
IGdldFN0cmluZyhsZXZlbERCVHJhbnNhY3Rpb24sIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVu
Y29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpO
YW1lKSwgb2JqZWN0U3RvcmVOYW1lLCBmb3VuZCk7CisgICAgaWYgKCFvaykgeworICAgICAgICBJ
bnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JEZWxldGVPYmplY3RT
dG9yZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBkZWxldGVSYW5nZShs
ZXZlbERCVHJhbnNhY3Rpb24sIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCAwKSwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4
S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKTsKIApAQCAtNjM4LDYgKzY1Miw3IEBAIHZv
aWQgSURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvCiAgICAgZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9u
LCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCwg
MCksIEluZGV4TWV0YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9y
ZUlkKSk7CiAKICAgICBjbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJREJCYWNraW5nU3Rv
cmU6OmdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYg
a2V5LCBTdHJpbmcmIHJlY29yZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggZDNhM2NmOThiMzYzZTQ5ZGFhZWViZDkzMzA2
ODNkODdlYzYwYmE3NC4uMGM4ZjU4NWQ0MGNjMzY0ZWEwYzZhNDAwMDczYmIxOWMzNjMwOTIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0
b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QkJhY2tpbmdTdG9yZT4gb3BlbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgcGF0aEJh
c2UsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCop
OwogCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXREYXRhYmFzZU5hbWVzKCk7Ci0gICAg
dmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJ
REJEYXRhYmFzZU1ldGFkYXRhKik7CisgICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0
YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKiwgYm9vbCYgc3Vj
Y2Vzcyk7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lvbiwg
aW50NjRfdCYgcm93SWQpOwogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFE
YXRhKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24pOwogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZl
cnNpb24oSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGludDY0
X3QgaW50VmVyc2lvbik7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
VmVjdG9yPElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRh
dGFiYXNlSWQpOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCk7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCiAgICAgY2xhc3MgUmVjb3JkSWRlbnRpZmllciB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcAppbmRleCA0NjM4ODc3NjRiNTdkZTM2ZDVkOWQxN2JkYzNkZjk0OGY0YWM1OTVk
Li45ZjA5M2Q2MzAwZWIwZDE4ZjkxMTI2YzhkYzljMWUwNmQwMDY5NzVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcApAQCAtMTgzLDggKzE4MywxMSBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwog
CiBib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAgYm9v
bCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9tZXRh
ZGF0YS5uYW1lLCAmbV9tZXRhZGF0YSk7CisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAg
Ym9vbCBvayA9IG1fYmFja2luZ1N0b3JlLT5nZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1fbWV0YWRh
dGEubmFtZSwgJm1fbWV0YWRhdGEsIHN1Y2Nlc3MpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
c3VjY2VzcyA9PSAobV9tZXRhZGF0YS5pZCAhPSBJbnZhbGlkSWQpLCAic3VjY2VzcyA9ICVzLCBt
X2lkID0gJWxsZCIsIHN1Y2Nlc3MgPyAidHJ1ZSIgOiAiZmFsc2UiLCBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KG1fbWV0YWRhdGEuaWQpKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgbG9hZE9iamVjdFN0b3JlcygpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI2NSw3ICsyNjgsMTEgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmQKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVPcGVy
YXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJEZWxldGVPYmplY3RTdG9yZU9wZXJh
dGlvbiIpOwotICAgIGRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUo
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlLT5pZCgpLCBv
YmplY3RTdG9yZS0+aWQoKSk7CisgICAgYm9vbCBvayA9IGRhdGFiYXNlLT5tX2JhY2tpbmdTdG9y
ZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIGRhdGFiYXNlLT5pZCgpLCBvYmplY3RTdG9yZS0+aWQoKSk7CisgICAgaWYgKCFvaykgewor
ICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVy
cm9yIGRlbGV0aW5nIG9iamVjdCBzdG9yZS4iKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0
KGVycm9yKTsKKyAgICB9CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lv
bkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2ZXJzaW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggNTVmZjViOGQwYTk4MTM4MzUwNjk3
OWIzZmE0NzgxYmYwY2RiYWEzYS4uOWIxN2FkZDExNTk3YTMxYTJiZDVkZTdkMmE4ODRhYmUxZTYx
MjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SURCRmFrZUJhY2tpbmdTdG9yZSA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogcHVibGljOgog
ICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZ2V0RGF0YWJhc2VOYW1lcygpIE9WRVJSSURFIHsg
cmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJh
c2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqKSBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSosIGJvb2wmIGZv
dW5kKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUlE
QkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNp
b24sIGludDY0X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpIE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShUcmFu
c2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VJbnRW
ZXJzaW9uKFRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgaW50NjRfdCB2ZXJzaW9uKSBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFZlY3RvcjxJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBnZXRPYmplY3RTdG9yZXMoaW50
NjRfdCBkYXRhYmFzZUlkKSBPVkVSUklERSB7IHJldHVybiBWZWN0b3I8SURCT2JqZWN0U3RvcmVN
ZXRhZGF0YT4oKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpIE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9y
ZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KSBPVkVSUklERSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwdXRSZWNvcmQoVHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177652</attachid>
            <date>2012-12-04 19:28:28 -0800</date>
            <delta_ts>2012-12-05 16:39:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103964-20121204192553.patch</filename>
            <type>text/plain</type>
            <size>14582</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUxYTc0YjI5ZmNlMTg1
MzM1MTFkOTE5MjFmZjRkOTM0MmFkZGFkNS4uZTAxZWM2MmVlNmFhMzRmODRiYmU4NzMzZjhiNGYz
OWQ2YmFhZDlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTEyLTA0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmFySW50KTog
TWFrZSByZXR1cm4gdmFsdWUgaW5kaWNhdGUgbGV2ZWxkYiBlcnJvci4KKyAgICAgICAgKFdlYkNv
cmU6OmdldFN0cmluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
OjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgQ2hhbmdlIHJldHVybiB2YWx1ZSB0
byBpbmRpY2F0ZSBsZXZlbGRiIGVycm9yLgorCisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5n
U3RvcmU6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgQWxyZWFkeSBoYWQgdGhlIGRlc2lyZWQg
cmV0dXJuIHZhbHVlIHNlbWFudGljcy4gQXMgYSBjb25zdW1lciBvZgorICAgICAgICBnZXRJREJE
YXRhYmFzZU1ldGFkYXRhLCB3aWxsIHJldHVybiBhbiBlcnJvciAoY2F1c2luZyBhbiBhYm9ydCkg
bW9yZQorICAgICAgICBvZnRlbi4KKworICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
OjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIE5lZWRlZCByZXR1cm4gdmFsdWUgY2hhbmdl
LiBXaWxsIHJldHVybiBlcnJvciB0byBEYXRhYmFzZUJhY2tlbmQgdG8KKyAgICAgICAgaW5kaWNh
dGUgbGV2ZWxkYiBwcm9ibGVtcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIFBhc3Mg
bGV2ZWxkYiBlcnJvcnMgdXAgdG8gY2FsbGVycywgd2hvIGFscmVhZHkgaGFuZGxlIGludGVybmFs
IGVycm9ycy4KKworICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVs
ZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICBBYm9ydCB0cmFuc2Fj
dGlvbiBpZiB0aGVyZSB3ZXJlIGxldmVsZGIgcHJvYmxlbXMgZGVsZXRpbmcgYW4gb2JqZWN0Cisg
ICAgICAgIHN0b3JlLgorCiAyMDEyLTEyLTAzICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IEFib3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNl
IG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAx
MTBiYzkwZmNiZDhkMWRiN2Y0MTUyYWVhNjAyYjAwNWNlNWVjODczLi45OGY2OGM1NzZhODE3OWE0
MzFkMDY2Y2FlYWE3NDBhZjNiNTQ3NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwxMCArMSwyMCBAQAorMjAxMi0xMi0wNCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBYm9ydCB0cmFuc2FjdGlvbnMgYmVjYXVzZSBv
ZiBsZXZlbGRiIGVycm9ycyBwYXJ0IDQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMzk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAg
IFVwZGF0ZSBvbmUgb3ZlcnJpZGRlbiBtZXRob2Qgc2lnbmF0dXJlLCBkZWxldGUgYW5vdGhlci4K
KwogMjAxMi0xMi0wNCAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCiAKICAgICAgICAgKiBERVBTOgog
Ci0yMDEyLTExLTMwICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKzIwMTIt
MTItMDQgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIElu
ZGV4ZWREQjogUHJvcGFnYXRlIG1vcmUgbGV2ZWxkYiBlcnJvcnMgdG8gSURCSW5kZXggYW5kIElE
Qk9iamVjdFN0b3JlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDM3ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGI3NjE1N2U2NGU2NzVkMzFiYWM1MDdmODhmODJjNWY4
ZGUyODA0NTMuLjJlODMxOWVmMDFiMTQ0NjY1YmJjMTQwYmFjODM3MTY3ZTg4Mzc1NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
LmNwcApAQCAtNjcsNiArNjcsNyBAQCBlbnVtIElEQkxldmVsREJCYWNraW5nU3RvcmVJbnRlcm5h
bEVycm9yVHlwZSB7CiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldFByaW1h
cnlLZXlWaWFJbmRleCwKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yS2V5RXhp
c3RzSW5JbmRleCwKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yVmVyc2lvbkV4
aXN0cywKKyAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yRGVsZXRlT2JqZWN0U3Rv
cmUsCiAgICAgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUludGVybmFsRXJyb3JNYXgsCiB9Owogc3Rh
dGljIGlubGluZSB2b2lkIHJlY29yZEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZUludGVybmFsRXJyb3JUeXBlIHR5cGUpCkBAIC0xMjEsMTcgKzEyMiwxNyBAQCBzdGF0aWMgdm9p
ZCBwdXRJbnQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNs
aWNlJiBrZXksIGludAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgot
c3RhdGljIGJvb2wgZ2V0VmFySW50KERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IExldmVsREJT
bGljZSYga2V5LCBpbnQ2NF90JiBmb3VuZEludCkKK1dBUk5fVU5VU0VEX1JFVFVSTiBzdGF0aWMg
Ym9vbCBnZXRWYXJJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXksIGludDY0X3QmIGZvdW5kSW50LCBib29sJiBmb3VuZCkKIHsKICAgICBWZWN0b3I8Y2hhcj4g
cmVzdWx0OwotICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICBib29sIG9rID0gZGItPnNhZmVH
ZXQoa2V5LCByZXN1bHQsIGZvdW5kKTsKLSAgICAvLyBGSVhNRTogTm90aWZ5IHRoZSBjYWxsZXIg
aWYgIW9rLgotICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKLSAgICBpZiAoIWZvdW5kKQorICAg
IGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBkZWNvZGVWYXJJbnQocmVzdWx0LmJlZ2luKCks
IHJlc3VsdC5lbmQoKSwgZm91bmRJbnQpID09IHJlc3VsdC5lbmQoKTsKKyAgICBmb3VuZCA9IGRl
Y29kZVZhckludChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBmb3VuZEludCkgPT0gcmVz
dWx0LmVuZCgpOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBwdXRWYXJJbnQo
TGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXks
IGludDY0X3QgdmFsdWUpCkBAIC0xNDAsMTUgKzE0MSwxNSBAQCBzdGF0aWMgdm9pZCBwdXRWYXJJ
bnQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXksCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9v
bCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXks
IFN0cmluZyYgZm91bmRTdHJpbmcpCitXQVJOX1VOVVNFRF9SRVRVUk4gc3RhdGljIGJvb2wgZ2V0
U3RyaW5nKERCT3JUcmFuc2FjdGlvbiogZGIsIGNvbnN0IExldmVsREJTbGljZSYga2V5LCBTdHJp
bmcmIGZvdW5kU3RyaW5nLCBib29sJiBmb3VuZCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0
OwotICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICBmb3VuZCA9IGZhbHNlOwogICAgIGJvb2wg
b2sgPSBkYi0+c2FmZUdldChrZXksIHJlc3VsdCwgZm91bmQpOwotICAgIC8vIEZJWE1FOiBOb3Rp
ZnkgdGhlIGNhbGxlciBpZiAhb2suCi0gICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAgIGlm
ICghZm91bmQpCisgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
Zm91bmQpCisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm91bmRTdHJpbmcgPSBkZWNvZGVT
dHJpbmcocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSk7CiAgICAgcmV0dXJuIHRydWU7CkBA
IC0zNjQsMjUgKzM2NSwyOSBAQCBWZWN0b3I8U3RyaW5nPiBJREJCYWNraW5nU3RvcmU6OmdldERh
dGFiYXNlTmFtZXMoKQogICAgIHJldHVybiBmb3VuZE5hbWVzOwogfQogCi1ib29sIElEQkJhY2tp
bmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRh
dGFiYXNlTWV0YWRhdGEqIG1ldGFkYXRhKQorYm9vbCBJREJCYWNraW5nU3RvcmU6OmdldElEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKiBt
ZXRhZGF0YSwgYm9vbCYgZm91bmQpCiB7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleSA9IERh
dGFiYXNlTmFtZUtleTo6ZW5jb2RlKG1faWRlbnRpZmllciwgbmFtZSk7CisgICAgZm91bmQgPSBm
YWxzZTsKIAotICAgIGJvb2wgb2sgPSBnZXRJbnQobV9kYi5nZXQoKSwga2V5LCBtZXRhZGF0YS0+
aWQpOwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3VuZCA9IGdl
dEludChtX2RiLmdldCgpLCBrZXksIG1ldGFkYXRhLT5pZCk7CisgICAgaWYgKCFmb3VuZCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgpLCBEYXRh
YmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5
OjpVc2VyVmVyc2lvbiksIG1ldGFkYXRhLT52ZXJzaW9uKTsKKyAgICBib29sIG9rID0gZ2V0U3Ry
aW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQs
IERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgbWV0YWRhdGEtPnZlcnNpb24sIGZv
dW5kKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZVJlYWRFcnJvckdldElEQkRhdGFiYXNlTWV0YURhdGEpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQorICAgIEFTU0VSVChmb3VuZCk7CiAKLSAgICBvayA9IGdldFZhcklu
dChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBE
YXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIG1ldGFkYXRhLT5pbnRWZXJzaW9u
KTsKKyAgICBvayA9IGdldFZhckludChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpl
bmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiks
IG1ldGFkYXRhLT5pbnRWZXJzaW9uLCBmb3VuZCk7CiAgICAgaWYgKCFvaykgewogICAgICAgICBJ
bnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JHZXRJREJEYXRhYmFz
ZU1ldGFEYXRhKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICBBU1NFUlQoZm91
bmQpOworCiAgICAgaWYgKG1ldGFkYXRhLT5pbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRh
dGE6OkRlZmF1bHRJbnRWZXJzaW9uKQogICAgICAgICBtZXRhZGF0YS0+aW50VmVyc2lvbiA9IElE
QkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKIApAQCAtNDU5LDcgKzQ2NCwxMSBAQCBi
b29sIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgIE93blB0cjxMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2
ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uOjpjcmVhdGUobV9kYi5nZXQoKSk7CiAKICAgICBJREJE
YXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgIGlmICghZ2V0SURCRGF0YWJhc2VNZXRhRGF0
YShuYW1lLCAmbWV0YWRhdGEpKQorICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIGJvb2wg
b2sgPSBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsICZtZXRhZGF0YSwgc3VjY2Vzcyk7Cisg
ICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghc3VjY2VzcykKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBE
YXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEuaWQsIERhdGFiYXNlTWV0YURhdGFL
ZXk6Ok9yaWdpbk5hbWUpOwpAQCAtNjIyLDEzICs2MzEsMTggQEAgYm9vbCBJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJCYWNraW5nU3RvcmU6OmRlbGV0
ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKK2Jvb2wgSURCQmFja2lu
Z1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7
CiAgICAgSURCX1RSQUNFKCJJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlIik7CiAg
ICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBJREJCYWNraW5nU3Rv
cmU6OlRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKIAog
ICAgIFN0cmluZyBvYmplY3RTdG9yZU5hbWU7Ci0gICAgZ2V0U3RyaW5nKGxldmVsREJUcmFuc2Fj
dGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok5hbWUpLCBvYmplY3RTdG9yZU5hbWUpOwor
ICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICBib29sIG9rID0gZ2V0U3RyaW5nKGxldmVsREJU
cmFuc2FjdGlvbiwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok5hbWUpLCBvYmplY3RTdG9yZU5h
bWUsIGZvdW5kKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckRlbGV0ZU9iamVjdFN0b3JlKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KIAogICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlvbiwg
T2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IDApLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCkpOwogCkBAIC02MzgsNiArNjUyLDcgQEAgdm9pZCBJREJCYWNraW5nU3RvcmU6
OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW8KICAgICBkZWxldGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIEluZGV4TWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwLCAwKSwgSW5kZXhNZXRhRGF0YUtl
eTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKTsKIAogICAgIGNsZWFy
T2JqZWN0U3RvcmUodHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOworICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKElEQkJh
Y2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiBrZXksIFN0cmluZyYgcmVjb3Jk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaAppbmRleCBkM2EzY2Y5OGIzNjNlNDlkYWFlZWJkOTMzMDY4M2Q4N2VjNjBiYTc0Li5lNmVk
NGQ4MDUxODA2ZGUxZmIwYjc3ZDkyNjY5NmU0MzFlZGZlOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVu
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgY29uc3QgU3RyaW5nJiBm
aWxlSWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKik7CiAKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IGdldERhdGFiYXNlTmFtZXMoKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SURC
RGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEq
KTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqLCBib29sJiBzdWNjZXNzKSBXQVJOX1VOVVNFRF9S
RVRVUk47CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lvbiwg
aW50NjRfdCYgcm93SWQpOwogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFE
YXRhKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24pOwogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZl
cnNpb24oSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGludDY0
X3QgaW50VmVyc2lvbik7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
VmVjdG9yPElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRh
dGFiYXNlSWQpOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCk7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCiAgICAgY2xhc3MgUmVjb3JkSWRlbnRpZmllciB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcAppbmRleCA0NjM4ODc3NjRiNTdkZTM2ZDVkOWQxN2JkYzNkZjk0OGY0YWM1OTVk
Li45ZjA5M2Q2MzAwZWIwZDE4ZjkxMTI2YzhkYzljMWUwNmQwMDY5NzVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmNwcApAQCAtMTgzLDggKzE4MywxMSBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwog
CiBib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAgYm9v
bCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9tZXRh
ZGF0YS5uYW1lLCAmbV9tZXRhZGF0YSk7CisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAg
Ym9vbCBvayA9IG1fYmFja2luZ1N0b3JlLT5nZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1fbWV0YWRh
dGEubmFtZSwgJm1fbWV0YWRhdGEsIHN1Y2Nlc3MpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
c3VjY2VzcyA9PSAobV9tZXRhZGF0YS5pZCAhPSBJbnZhbGlkSWQpLCAic3VjY2VzcyA9ICVzLCBt
X2lkID0gJWxsZCIsIHN1Y2Nlc3MgPyAidHJ1ZSIgOiAiZmFsc2UiLCBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KG1fbWV0YWRhdGEuaWQpKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgbG9hZE9iamVjdFN0b3JlcygpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI2NSw3ICsyNjgsMTEgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmQKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVPcGVy
YXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJEZWxldGVPYmplY3RTdG9yZU9wZXJh
dGlvbiIpOwotICAgIGRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUo
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlLT5pZCgpLCBv
YmplY3RTdG9yZS0+aWQoKSk7CisgICAgYm9vbCBvayA9IGRhdGFiYXNlLT5tX2JhY2tpbmdTdG9y
ZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIGRhdGFiYXNlLT5pZCgpLCBvYmplY3RTdG9yZS0+aWQoKSk7CisgICAgaWYgKCFvaykgewor
ICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVy
cm9yIGRlbGV0aW5nIG9iamVjdCBzdG9yZS4iKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0
KGVycm9yKTsKKyAgICB9CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lv
bkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgaW50NjRfdCB2ZXJzaW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmgKaW5kZXggNTVmZjViOGQwYTk4MTM4MzUwNjk3
OWIzZmE0NzgxYmYwY2RiYWEzYS4uOWIxN2FkZDExNTk3YTMxYTJiZDVkZTdkMmE4ODRhYmUxZTYx
MjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFj
a2luZ1N0b3JlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SURCRmFrZUJhY2tpbmdTdG9yZSA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogcHVibGljOgog
ICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZ2V0RGF0YWJhc2VOYW1lcygpIE9WRVJSSURFIHsg
cmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJh
c2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqKSBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSosIGJvb2wmIGZv
dW5kKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUlE
QkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNp
b24sIGludDY0X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpIE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShUcmFu
c2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VJbnRW
ZXJzaW9uKFRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgaW50NjRfdCB2ZXJzaW9uKSBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDEsNyArNDEsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFZlY3RvcjxJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBnZXRPYmplY3RTdG9yZXMoaW50
NjRfdCBkYXRhYmFzZUlkKSBPVkVSUklERSB7IHJldHVybiBWZWN0b3I8SURCT2JqZWN0U3RvcmVN
ZXRhZGF0YT4oKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShUcmFuc2Fj
dGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpIE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9OwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9y
ZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
KSBPVkVSUklERSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwdXRSZWNvcmQoVHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5
JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgUmVjb3JkSWRlbnRpZmllciopIE9WRVJSSURFIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177863</attachid>
            <date>2012-12-05 16:39:55 -0800</date>
            <delta_ts>2012-12-05 17:03:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103964-20121205163720.patch</filename>
            <type>text/plain</type>
            <size>14293</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEzYmFmMzY5MjY0ZTVi
YTUxYWJiMjIxNGVlN2YzMDBkMzAzOTRhMS4uMWRkZWM3NTJlNDVkZmIwZmQzMjk3MWZiYjJhNDgx
NjA0NDQ0MzZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTEyLTA0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmFySW50KTog
TWFrZSByZXR1cm4gdmFsdWUgaW5kaWNhdGUgbGV2ZWxkYiBlcnJvci4KKyAgICAgICAgKFdlYkNv
cmU6OmdldFN0cmluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
OjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgQ2hhbmdlIHJldHVybiB2YWx1ZSB0
byBpbmRpY2F0ZSBsZXZlbGRiIGVycm9yLgorCisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5n
U3RvcmU6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgQWxyZWFkeSBoYWQgdGhlIGRlc2lyZWQg
cmV0dXJuIHZhbHVlIHNlbWFudGljcy4gQXMgYSBjb25zdW1lciBvZgorICAgICAgICBnZXRJREJE
YXRhYmFzZU1ldGFkYXRhLCB3aWxsIHJldHVybiBhbiBlcnJvciAoY2F1c2luZyBhbiBhYm9ydCkg
bW9yZQorICAgICAgICBvZnRlbi4KKworICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3Jl
OjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIE5lZWRlZCByZXR1cm4gdmFsdWUgY2hhbmdl
LiBXaWxsIHJldHVybiBlcnJvciB0byBEYXRhYmFzZUJhY2tlbmQgdG8KKyAgICAgICAgaW5kaWNh
dGUgbGV2ZWxkYiBwcm9ibGVtcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIFBhc3Mg
bGV2ZWxkYiBlcnJvcnMgdXAgdG8gY2FsbGVycywgd2hvIGFscmVhZHkgaGFuZGxlIGludGVybmFs
IGVycm9ycy4KKworICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVs
ZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICBBYm9ydCB0cmFuc2Fj
dGlvbiBpZiB0aGVyZSB3ZXJlIGxldmVsZGIgcHJvYmxlbXMgZGVsZXRpbmcgYW4gb2JqZWN0Cisg
ICAgICAgIHN0b3JlLgorCiAyMDEyLTEyLTA1ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM2NDgxLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxZTAzOGQ5ZWNmZjQ1NjgxNTFhN2IzYjI4NGQxMzE3
MzU0NGFiNTVlLi40ZDY1MzU2NGE5MWI3Mjg0MzBkMDEwOGU5M2Y5YzIwMzRmYWQ1MjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEyLTA0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9JREJGYWtl
QmFja2luZ1N0b3JlLmg6CisgICAgICAgICAgVXBkYXRlIG9uZSBvdmVycmlkZGVuIG1ldGhvZCBz
aWduYXR1cmUsIGRlbGV0ZSBhbm90aGVyLgorCiAyMDEyLTEyLTA1ICBFYmVyaGFyZCBHcmFldGhl
ciAgPGVncmFldGhlckBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIFdl
YkxheWVyVHJlZVZpZXcgQVBJIHRvIHNldCBmb250IGF0bGFzCkBAIC0zNTcsNyArMzY3LDcgQEAK
IAogICAgICAgICAqIERFUFM6CiAKLTIwMTItMTEtMzAgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5A
Y2hyb21pdW0ub3JnPgorMjAxMi0xMi0wNCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBQcm9wYWdhdGUgbW9yZSBsZXZlbGRiIGVycm9y
cyB0byBJREJJbmRleCBhbmQgSURCT2JqZWN0U3RvcmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzc4MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjc2MTU3ZTY0ZTY3
NWQzMWJhYzUwN2Y4OGY4MmM1ZjhkZTI4MDQ1My4uMmU4MzE5ZWYwMWIxNDQ2NjViYmMxNDBiYWM4
MzcxNjdlODgzNzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIGVudW0gSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZUludGVybmFsRXJyb3JUeXBlIHsKICAgICBJREJMZXZlbERCQmFja2luZ1N0
b3JlUmVhZEVycm9yR2V0UHJpbWFyeUtleVZpYUluZGV4LAogICAgIElEQkxldmVsREJCYWNraW5n
U3RvcmVSZWFkRXJyb3JLZXlFeGlzdHNJbkluZGV4LAogICAgIElEQkxldmVsREJCYWNraW5nU3Rv
cmVSZWFkRXJyb3JWZXJzaW9uRXhpc3RzLAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFk
RXJyb3JEZWxldGVPYmplY3RTdG9yZSwKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJu
YWxFcnJvck1heCwKIH07CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkSW50ZXJuYWxFcnJvcihJ
REJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJvclR5cGUgdHlwZSkKQEAgLTEyMSwxNyAr
MTIyLDE3IEBAIHN0YXRpYyB2b2lkIHB1dEludChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBnZXRWYXJJbnQoREJPclRyYW5zYWN0aW9u
KiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGludDY0X3QmIGZvdW5kSW50KQorV0FSTl9V
TlVTRURfUkVUVVJOIHN0YXRpYyBib29sIGdldFZhckludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBj
b25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCYgZm91bmRJbnQsIGJvb2wmIGZvdW5kKQog
ewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAg
IGJvb2wgb2sgPSBkYi0+c2FmZUdldChrZXksIHJlc3VsdCwgZm91bmQpOwotICAgIC8vIEZJWE1F
OiBOb3RpZnkgdGhlIGNhbGxlciBpZiAhb2suCi0gICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwot
ICAgIGlmICghZm91bmQpCisgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZm91bmQpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGRlY29kZVZh
ckludChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBmb3VuZEludCkgPT0gcmVzdWx0LmVu
ZCgpOworICAgIGZvdW5kID0gZGVjb2RlVmFySW50KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5k
KCksIGZvdW5kSW50KSA9PSByZXN1bHQuZW5kKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyB2b2lkIHB1dFZhckludChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25z
dCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCB2YWx1ZSkKQEAgLTE0MCwxNSArMTQxLDE1IEBA
IHN0YXRpYyB2b2lkIHB1dFZhckludChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBj
b25zdCBMZXZlbERCU2xpY2UmIGtleSwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFu
c2FjdGlvbj4KLXN0YXRpYyBib29sIGdldFN0cmluZyhEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25z
dCBMZXZlbERCU2xpY2UmIGtleSwgU3RyaW5nJiBmb3VuZFN0cmluZykKK1dBUk5fVU5VU0VEX1JF
VFVSTiBzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2
ZWxEQlNsaWNlJiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcsIGJvb2wmIGZvdW5kKQogewogICAg
IFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIGZvdW5k
ID0gZmFsc2U7CiAgICAgYm9vbCBvayA9IGRiLT5zYWZlR2V0KGtleSwgcmVzdWx0LCBmb3VuZCk7
Ci0gICAgLy8gRklYTUU6IE5vdGlmeSB0aGUgY2FsbGVyIGlmICFvay4KLSAgICBBU1NFUlRfVU5V
U0VEKG9rLCBvayk7Ci0gICAgaWYgKCFmb3VuZCkKKyAgICBpZiAoIW9rKQogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBm
b3VuZFN0cmluZyA9IGRlY29kZVN0cmluZyhyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM2NCwyNSArMzY1LDI5IEBAIFZlY3RvcjxTdHJpbmc+IElE
QkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcygpCiAgICAgcmV0dXJuIGZvdW5kTmFtZXM7
CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSogbWV0YWRhdGEpCitib29sIElEQkJh
Y2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkRhdGFiYXNlTWV0YWRhdGEqIG1ldGFkYXRhLCBib29sJiBmb3VuZCkKIHsKICAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBu
YW1lKTsKKyAgICBmb3VuZCA9IGZhbHNlOwogCi0gICAgYm9vbCBvayA9IGdldEludChtX2RiLmdl
dCgpLCBrZXksIG1ldGFkYXRhLT5pZCk7Ci0gICAgaWYgKCFvaykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGZvdW5kID0gZ2V0SW50KG1fZGIuZ2V0KCksIGtleSwgbWV0YWRhdGEtPmlkKTsK
KyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG9rID0gZ2V0U3Ry
aW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQs
IERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgbWV0YWRhdGEtPnZlcnNpb24pOwor
ICAgIGJvb2wgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6
ZW5jb2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCBt
ZXRhZGF0YS0+dmVyc2lvbiwgZm91bmQpOwogICAgIGlmICghb2spIHsKICAgICAgICAgSW50ZXJu
YWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yR2V0SURCRGF0YWJhc2VNZXRh
RGF0YSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgQVNTRVJUKGZvdW5kKTsK
IAotICAgIG9rID0gZ2V0VmFySW50KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVu
Y29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwg
bWV0YWRhdGEtPmludFZlcnNpb24pOworICAgIG9rID0gZ2V0VmFySW50KG1fZGIuZ2V0KCksIERh
dGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFL
ZXk6OlVzZXJJbnRWZXJzaW9uKSwgbWV0YWRhdGEtPmludFZlcnNpb24sIGZvdW5kKTsKICAgICBp
ZiAoIW9rKSB7CiAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJl
YWRFcnJvckdldElEQkRhdGFiYXNlTWV0YURhdGEpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQorICAgIEFTU0VSVChmb3VuZCk7CisKICAgICBpZiAobWV0YWRhdGEtPmludFZlcnNpb24g
PT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24pCiAgICAgICAgIG1ldGFk
YXRhLT5pbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwogCkBA
IC00NTksNyArNDY0LDExIEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgT3duUHRyPExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlv
bj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb246OmNyZWF0ZShtX2Ri
LmdldCgpKTsKIAogICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGE7Ci0gICAgaWYgKCFn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsICZtZXRhZGF0YSkpCisgICAgYm9vbCBzdWNjZXNz
ID0gZmFsc2U7CisgICAgYm9vbCBvayA9IGdldElEQkRhdGFiYXNlTWV0YURhdGEobmFtZSwgJm1l
dGFkYXRhLCBzdWNjZXNzKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS5p
ZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFtZSk7CkBAIC02MjIsMTMgKzYzMSwxOCBA
QCBib29sIElEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIElE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkKQorYm9vbCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdTdG9yZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUiKTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2Fj
dGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZy
b20odHJhbnNhY3Rpb24pOwogCiAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZTsKLSAgICBnZXRT
dHJpbmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TmFtZSks
IG9iamVjdFN0b3JlTmFtZSk7CisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIGJvb2wgb2sg
PSBnZXRTdHJpbmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5Ojpl
bmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6
TmFtZSksIG9iamVjdFN0b3JlTmFtZSwgZm91bmQpOworICAgIGlmICghb2spIHsKKyAgICAgICAg
SW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yRGVsZXRlT2JqZWN0
U3RvcmUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgZGVsZXRlUmFuZ2Uo
bGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgMCksIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1h
eEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSk7CiAKQEAgLTYzOCw2ICs2NTIsNyBAQCB2
b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiogdHJhbnNhY3RpbwogICAgIGRlbGV0ZVJhbmdlKGxldmVsREJUcmFuc2FjdGlv
biwgSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIDAs
IDApLCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCkpOwogCiAgICAgY2xlYXJPYmplY3RTdG9yZSh0cmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgSURCQmFja2luZ1N0
b3JlOjpnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
IGtleSwgU3RyaW5nJiByZWNvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGQzYTNjZjk4YjM2M2U0OWRhYWVlYmQ5MzMw
NjgzZDg3ZWM2MGJhNzQuLmU2ZWQ0ZDgwNTE4MDZkZTFmYjBiNzdkOTI2Njk2ZTQzMWVkZmU4ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdT
dG9yZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IG9wZW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIHBhdGhC
YXNlLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwq
KTsKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZ2V0RGF0YWJhc2VOYW1lcygpOwotICAg
IHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCRGF0YWJhc2VNZXRhZGF0YSopOworICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSosIGJvb2wmIHN1
Y2Nlc3MpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0
YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwg
aW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCk7CiAgICAgdmlydHVhbCBib29sIHVw
ZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGlu
dDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCBib29sIHVw
ZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCByb3dJZCwgaW50NjRfdCBpbnRWZXJzaW9uKTsKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBWZWN0b3I8SURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gZ2V0T2Jq
ZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCk7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZU9i
amVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2Jq
ZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT2JqZWN0
U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKICAgICBjbGFzcyBS
ZWNvcmRJZGVudGlmaWVyIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVjb3JkSWRl
bnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDdhYjYxOGJhOTg0Y2I4MmIzNTBk
NWI5NGRkZmNiODUzZGRjNDllODAuLjcyMGU1YTEwYjZmNjBmYmU1MzdmMjNhMzViNmM3MDRhZGJi
NWQ1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0yMzYsOCArMjM2LDExIEBAIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJCYWNraW5nU3RvCiAKIGJvb2wgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3Blbklu
dGVybmFsKCkKIHsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0SURCRGF0
YWJhc2VNZXRhRGF0YShtX21ldGFkYXRhLm5hbWUsICZtX21ldGFkYXRhKTsKKyAgICBib29sIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICBib29sIG9rID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFi
YXNlTWV0YURhdGEobV9tZXRhZGF0YS5uYW1lLCAmbV9tZXRhZGF0YSwgc3VjY2Vzcyk7CiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShzdWNjZXNzID09IChtX21ldGFkYXRhLmlkICE9IEludmFsaWRJ
ZCksICJzdWNjZXNzID0gJXMsIG1faWQgPSAlbGxkIiwgc3VjY2VzcyA/ICJ0cnVlIiA6ICJmYWxz
ZSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9tZXRhZGF0YS5pZCkpOworICAgIGlmICghb2sp
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICBsb2Fk
T2JqZWN0U3RvcmVzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzE4LDcgKzMyMSwxMSBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3Qg
aWQsIElEQlRyYW5zYWN0aW9uQmFja2VuZAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpE
ZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsKiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIkRlbGV0ZU9iamVjdFN0b3JlT3Bl
cmF0aW9uIik7Ci0gICAgbV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0
b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlLT5p
ZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpKTsKKyAgICBib29sIG9rID0gbV9kYXRhYmFzZS0+bV9i
YWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVU
cmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlLT5pZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpKTsKKyAg
ICBpZiAoIW9rKSB7CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCAiSW50ZXJuYWwgZXJyb3IgZGVsZXRpbmcgb2JqZWN0IHN0b3JlLiIpOworICAgICAgICB0cmFu
c2FjdGlvbi0+YWJvcnQoZXJyb3IpOworICAgIH0KIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwqIHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRleCA1NWZmNWI4ZDBhOTgxMzgzNTA2OTc5YjNm
YTQ3ODFiZjBjZGJhYTNhLi45YjE3YWRkMTE1OTdhMzFhMmJkNWRlN2QyYTg4NGFiZTFlNjEyNmUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5n
U3RvcmUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJREJG
YWtlQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXREYXRhYmFzZU5hbWVzKCkgT1ZFUlJJREUgeyByZXR1
cm4gVmVjdG9yPFN0cmluZz4oKTsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSopIE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURh
dGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKiwgYm9vbCYgZm91bmQp
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0
YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwg
aW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNp
b24oVHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IHZlcnNpb24pIE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgVmVjdG9yPElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IGdldE9iamVjdFN0b3JlcyhpbnQ2NF90
IGRhdGFiYXNlSWQpIE9WRVJSSURFIHsgcmV0dXJuIFZlY3RvcjxJREJPYmplY3RTdG9yZU1ldGFk
YXRhPigpOyB9CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9u
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCkgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH07Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9W
RVJSSURFIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHB1dFJlY29yZChUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgT1ZFUlJJREUgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177871</attachid>
            <date>2012-12-05 17:03:16 -0800</date>
            <delta_ts>2012-12-06 12:06:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103964-20121205170041.patch</filename>
            <type>text/plain</type>
            <size>14422</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEzYmFmMzY5MjY0ZTVi
YTUxYWJiMjIxNGVlN2YzMDBkMzAzOTRhMS4uYzliMTc3ZTE3NjM5NmVkNTg2YjYyODA5OThiYzkw
ZjU4NmU5ZDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTEyLTA0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGVsZXRlRGF0YWJhc2Us
IG9wZW4sIGFuZCBkZWxldGVPYmplY3RTdG9yZSB3aWxsIG5vdyBmaXJlIG1vcmUgYWJvcnRzCisg
ICAgICAgIGFuZCBlcnJvcnMgaW4gY2FzZSBvZiBsZXZlbGRiIHByb2JsZW1zCisKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0VmFySW50KTogTWFrZSByZXR1cm4gdmFsdWUgaW5kaWNhdGUgbGV2ZWxkYiBlcnJvci4K
KyAgICAgICAgKFdlYkNvcmU6OmdldFN0cmluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgQ2hhbmdl
IHJldHVybiB2YWx1ZSB0byBpbmRpY2F0ZSBsZXZlbGRiIGVycm9yLgorCisgICAgICAgIChXZWJD
b3JlOjpJREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgQWxyZWFkeSBo
YWQgdGhlIGRlc2lyZWQgcmV0dXJuIHZhbHVlIHNlbWFudGljcy4gQXMgYSBjb25zdW1lciBvZgor
ICAgICAgICBnZXRJREJEYXRhYmFzZU1ldGFkYXRhLCB3aWxsIHJldHVybiBhbiBlcnJvciAoY2F1
c2luZyBhbiBhYm9ydCkgbW9yZQorICAgICAgICBvZnRlbi4KKworICAgICAgICAoV2ViQ29yZTo6
SURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIE5lZWRlZCByZXR1
cm4gdmFsdWUgY2hhbmdlLiBXaWxsIHJldHVybiBlcnJvciB0byBEYXRhYmFzZUJhY2tlbmQgdG8K
KyAgICAgICAgaW5kaWNhdGUgbGV2ZWxkYiBwcm9ibGVtcy4KKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6
CisgICAgICAgIFBhc3MgbGV2ZWxkYiBlcnJvcnMgdXAgdG8gY2FsbGVycywgd2hvIGFscmVhZHkg
aGFuZGxlIGludGVybmFsIGVycm9ycy4KKworICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAg
ICBBYm9ydCB0cmFuc2FjdGlvbiBpZiB0aGVyZSB3ZXJlIGxldmVsZGIgcHJvYmxlbXMgZGVsZXRp
bmcgYW4gb2JqZWN0CisgICAgICAgIHN0b3JlLgorCiAyMDEyLTEyLTA1ICBLZW50YXJvIEhhcmEg
IDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTM2NDgxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxZTAzOGQ5ZWNmZjQ1Njgx
NTFhN2IzYjI4NGQxMzE3MzU0NGFiNTVlLi40ZDY1MzU2NGE5MWI3Mjg0MzBkMDEwOGU5M2Y5YzIw
MzRmYWQ1MjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDEyLTEyLTA0ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBJbmRleGVkREI6IEFib3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3Jz
IHBhcnQgNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzOTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB0ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmg6CisgICAgICAgICAgVXBkYXRlIG9uZSBvdmVy
cmlkZGVuIG1ldGhvZCBzaWduYXR1cmUsIGRlbGV0ZSBhbm90aGVyLgorCiAyMDEyLTEyLTA1ICBF
YmVyaGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gUmVtb3ZlIFdlYkxheWVyVHJlZVZpZXcgQVBJIHRvIHNldCBmb250IGF0bGFzCkBAIC0z
NTcsNyArMzY3LDcgQEAKIAogICAgICAgICAqIERFUFM6CiAKLTIwMTItMTEtMzAgIERhdmlkIEdy
b2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgorMjAxMi0xMi0wNCAgRGF2aWQgR3JvZ2FuICA8
ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBQcm9wYWdhdGUgbW9y
ZSBsZXZlbGRiIGVycm9ycyB0byBJREJJbmRleCBhbmQgSURCT2JqZWN0U3RvcmUKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzc4MgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5k
ZXggYjc2MTU3ZTY0ZTY3NWQzMWJhYzUwN2Y4OGY4MmM1ZjhkZTI4MDQ1My4uMmU4MzE5ZWYwMWIx
NDQ2NjViYmMxNDBiYWM4MzcxNjdlODgzNzU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwCkBAIC02Nyw2ICs2Nyw3IEBA
IGVudW0gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZUludGVybmFsRXJyb3JUeXBlIHsKICAgICBJREJM
ZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yR2V0UHJpbWFyeUtleVZpYUluZGV4LAogICAgIElE
QkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JLZXlFeGlzdHNJbkluZGV4LAogICAgIElEQkxl
dmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JWZXJzaW9uRXhpc3RzLAorICAgIElEQkxldmVsREJC
YWNraW5nU3RvcmVSZWFkRXJyb3JEZWxldGVPYmplY3RTdG9yZSwKICAgICBJREJMZXZlbERCQmFj
a2luZ1N0b3JlSW50ZXJuYWxFcnJvck1heCwKIH07CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3Jk
SW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJvclR5cGUgdHlw
ZSkKQEAgLTEyMSwxNyArMTIyLDE3IEBAIHN0YXRpYyB2b2lkIHB1dEludChMZXZlbERCVHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBEQk9yVHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBnZXRWYXJJbnQo
REJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGludDY0X3QmIGZv
dW5kSW50KQorV0FSTl9VTlVTRURfUkVUVVJOIHN0YXRpYyBib29sIGdldFZhckludChEQk9yVHJh
bnNhY3Rpb24qIGRiLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCYgZm91bmRJbnQs
IGJvb2wmIGZvdW5kKQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgYm9vbCBmb3Vu
ZCA9IGZhbHNlOwogICAgIGJvb2wgb2sgPSBkYi0+c2FmZUdldChrZXksIHJlc3VsdCwgZm91bmQp
OwotICAgIC8vIEZJWE1FOiBOb3RpZnkgdGhlIGNhbGxlciBpZiAhb2suCi0gICAgQVNTRVJUX1VO
VVNFRChvaywgb2spOwotICAgIGlmICghZm91bmQpCisgICAgaWYgKCFvaykKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
cmV0dXJuIGRlY29kZVZhckludChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBmb3VuZElu
dCkgPT0gcmVzdWx0LmVuZCgpOworICAgIGZvdW5kID0gZGVjb2RlVmFySW50KHJlc3VsdC5iZWdp
bigpLCByZXN1bHQuZW5kKCksIGZvdW5kSW50KSA9PSByZXN1bHQuZW5kKCk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIHB1dFZhckludChMZXZlbERCVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCB2YWx1ZSkKQEAgLTE0
MCwxNSArMTQxLDE1IEBAIHN0YXRpYyB2b2lkIHB1dFZhckludChMZXZlbERCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KLXN0YXRpYyBib29sIGdldFN0cmluZyhEQk9yVHJhbnNh
Y3Rpb24qIGRiLCBjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgU3RyaW5nJiBmb3VuZFN0cmluZykK
K1dBUk5fVU5VU0VEX1JFVFVSTiBzdGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9u
KiBkYiwgY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcsIGJvb2wm
IGZvdW5kKQogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgYm9vbCBmb3VuZCA9IGZh
bHNlOworICAgIGZvdW5kID0gZmFsc2U7CiAgICAgYm9vbCBvayA9IGRiLT5zYWZlR2V0KGtleSwg
cmVzdWx0LCBmb3VuZCk7Ci0gICAgLy8gRklYTUU6IE5vdGlmeSB0aGUgY2FsbGVyIGlmICFvay4K
LSAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7Ci0gICAgaWYgKCFmb3VuZCkKKyAgICBpZiAoIW9r
KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBmb3VuZFN0cmluZyA9IGRlY29kZVN0cmluZyhyZXN1bHQuYmVnaW4oKSwg
cmVzdWx0LmVuZCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM2NCwyNSArMzY1LDI5IEBAIFZl
Y3RvcjxTdHJpbmc+IElEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcygpCiAgICAgcmV0
dXJuIGZvdW5kTmFtZXM7CiB9CiAKLWJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFz
ZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSogbWV0YWRh
dGEpCitib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqIG1ldGFkYXRhLCBib29sJiBmb3VuZCkK
IHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUo
bV9pZGVudGlmaWVyLCBuYW1lKTsKKyAgICBmb3VuZCA9IGZhbHNlOwogCi0gICAgYm9vbCBvayA9
IGdldEludChtX2RiLmdldCgpLCBrZXksIG1ldGFkYXRhLT5pZCk7Ci0gICAgaWYgKCFvaykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvdW5kID0gZ2V0SW50KG1fZGIuZ2V0KCksIGtleSwg
bWV0YWRhdGEtPmlkKTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29k
ZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgbWV0YWRh
dGEtPnZlcnNpb24pOworICAgIGJvb2wgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJh
c2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6
VXNlclZlcnNpb24pLCBtZXRhZGF0YS0+dmVyc2lvbiwgZm91bmQpOwogICAgIGlmICghb2spIHsK
ICAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yR2V0
SURCRGF0YWJhc2VNZXRhRGF0YSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAg
QVNTRVJUKGZvdW5kKTsKIAotICAgIG9rID0gZ2V0VmFySW50KG1fZGIuZ2V0KCksIERhdGFiYXNl
TWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVz
ZXJJbnRWZXJzaW9uKSwgbWV0YWRhdGEtPmludFZlcnNpb24pOworICAgIG9rID0gZ2V0VmFySW50
KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERh
dGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgbWV0YWRhdGEtPmludFZlcnNpb24s
IGZvdW5kKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIEludGVybmFsRXJyb3IoSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldElEQkRhdGFiYXNlTWV0YURhdGEpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIEFTU0VSVChmb3VuZCk7CisKICAgICBpZiAobWV0YWRh
dGEtPmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24p
CiAgICAgICAgIG1ldGFkYXRhLT5pbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9J
bnRWZXJzaW9uOwogCkBAIC00NTksNyArNDY0LDExIEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgT3duUHRyPExldmVsREJXcml0
ZU9ubHlUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rp
b246OmNyZWF0ZShtX2RiLmdldCgpKTsKIAogICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRh
dGE7Ci0gICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsICZtZXRhZGF0YSkpCisg
ICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgYm9vbCBvayA9IGdldElEQkRhdGFiYXNlTWV0
YURhdGEobmFtZSwgJm1ldGFkYXRhLCBzdWNjZXNzKTsKKyAgICBpZiAoIW9rKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTWV0YURhdGFLZXk6OmVu
Y29kZShtZXRhZGF0YS5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFtZSk7CkBAIC02
MjIsMTMgKzYzMSwxOCBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpbwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2lu
Z1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkKQorYm9vbCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0
b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24q
IGxldmVsREJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVs
REJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogCiAgICAgU3RyaW5nIG9iamVjdFN0b3Jl
TmFtZTsKLSAgICBnZXRTdHJpbmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6TmFtZSksIG9iamVjdFN0b3JlTmFtZSk7CisgICAgYm9vbCBmb3VuZCA9IGZhbHNl
OworICAgIGJvb2wgb2sgPSBnZXRTdHJpbmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3Rv
cmVNZXRhRGF0YUtleTo6TmFtZSksIG9iamVjdFN0b3JlTmFtZSwgZm91bmQpOworICAgIGlmICgh
b2spIHsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVy
cm9yRGVsZXRlT2JqZWN0U3RvcmUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAg
ICAgZGVsZXRlUmFuZ2UobGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCksIE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSk7CiAKQEAgLTYz
OCw2ICs2NTIsNyBAQCB2b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURC
QmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpbwogICAgIGRlbGV0ZVJhbmdlKGxl
dmVsREJUcmFuc2FjdGlvbiwgSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIDAsIDApLCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCkpOwogCiAgICAgY2xlYXJPYmplY3RTdG9yZSh0cmFuc2FjdGlv
biwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJv
b2wgSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBJREJLZXkmIGtleSwgU3RyaW5nJiByZWNvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGQzYTNjZjk4YjM2
M2U0OWRhYWVlYmQ5MzMwNjgzZDg3ZWM2MGJhNzQuLmU2ZWQ0ZDgwNTE4MDZkZTFmYjBiNzdkOTI2
Njk2ZTQzMWVkZmU4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW4oU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBTdHJpbmcmIHBhdGhCYXNlLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJGYWN0
b3J5QmFja2VuZEltcGwqKTsKIAogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZ2V0RGF0YWJh
c2VOYW1lcygpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSopOworICAgIHZpcnR1YWwgYm9vbCBn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRh
ZGF0YSosIGJvb2wmIHN1Y2Nlc3MpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCk7CiAgICAg
dmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAgICAg
dmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgaW50NjRfdCBpbnRWZXJzaW9uKTsKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBWZWN0b3I8SURCT2JqZWN0U3RvcmVN
ZXRhZGF0YT4gZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCk7CiAgICAgdmlydHVh
bCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsKKyAgICB2aXJ0dWFsIGJv
b2wgZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBXQVJOX1VOVVNFRF9SRVRVUk47
CiAKICAgICBjbGFzcyBSZWNvcmRJZGVudGlmaWVyIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVjb3JkSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDdhYjYx
OGJhOTg0Y2I4MmIzNTBkNWI5NGRkZmNiODUzZGRjNDllODAuLjcyMGU1YTEwYjZmNjBmYmU1Mzdm
MjNhMzViNmM3MDRhZGJiNWQ1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0yMzYsOCAr
MjM2LDExIEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwo
Y29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAKIGJvb2wgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b3BlbkludGVybmFsKCkKIHsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdT
dG9yZS0+Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShtX21ldGFkYXRhLm5hbWUsICZtX21ldGFkYXRh
KTsKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBib29sIG9rID0gbV9iYWNraW5nU3Rv
cmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9tZXRhZGF0YS5uYW1lLCAmbV9tZXRhZGF0YSwg
c3VjY2Vzcyk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzdWNjZXNzID09IChtX21ldGFkYXRh
LmlkICE9IEludmFsaWRJZCksICJzdWNjZXNzID0gJXMsIG1faWQgPSAlbGxkIiwgc3VjY2VzcyA/
ICJ0cnVlIiA6ICJmYWxzZSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9tZXRhZGF0YS5pZCkp
OworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoc3VjY2Vzcykg
ewogICAgICAgICBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MzE4LDcgKzMyMSwxMSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVj
dFN0b3JlKGludDY0X3QgaWQsIElEQlRyYW5zYWN0aW9uQmFja2VuZAogdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIkRlbGV0
ZU9iamVjdFN0b3JlT3BlcmF0aW9uIik7Ci0gICAgbV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUt
PmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBtX2RhdGFiYXNlLT5pZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpKTsKKyAgICBib29sIG9rID0g
bV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlLT5pZCgpLCBtX29iamVjdFN0
b3JlLT5pZCgpKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVy
cm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgZGVsZXRpbmcgb2JqZWN0IHN0b3JlLiIp
OworICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IpOworICAgIH0KIH0KIAogdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJGYWtlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaAppbmRleCA1NWZmNWI4ZDBh
OTgxMzgzNTA2OTc5YjNmYTQ3ODFiZjBjZGJhYTNhLi45YjE3YWRkMTE1OTdhMzFhMmJkNWRlN2Qy
YTg4NGFiZTFlNjEyNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkZha2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkZha2VCYWNraW5nU3RvcmUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBJREJGYWtlQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXREYXRhYmFzZU5hbWVzKCkg
T1ZFUlJJREUgeyByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQotICAgIHZpcnR1YWwgYm9vbCBn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRh
ZGF0YSopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldElE
QkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRh
KiwgYm9vbCYgZm91bmQpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1l
dGFEYXRhKFRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJE
YXRhYmFzZUludFZlcnNpb24oVHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IHZl
cnNpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00MSw3ICs0MSw2IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgVmVjdG9yPElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IGdldE9iamVj
dFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQpIE9WRVJSSURFIHsgcmV0dXJuIFZlY3RvcjxJREJP
YmplY3RTdG9yZU1ldGFkYXRhPigpOyB9CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0
b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3Jl
bWVudCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH07Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHB1dFJlY29yZChU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJLZXkmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBSZWNvcmRJZGVudGlmaWVyKikgT1ZF
UlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUgeyB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178055</attachid>
            <date>2012-12-06 12:06:54 -0800</date>
            <delta_ts>2012-12-06 14:57:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103964-20121206120419.patch</filename>
            <type>text/plain</type>
            <size>14757</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFkMmIzOTg2MzFhN2Nm
NGJhNTYzMGYzNDQ5NWUyNzYwN2NiOWNiNC4uY2IxMTE0ZjY1MjU3M2YxNmY5MjAxMzlkM2QxYTJk
MzRlNWEyNjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTEyLTA0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEFi
b3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQgNAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGVsZXRlRGF0YWJhc2Us
IG9wZW4sIGFuZCBkZWxldGVPYmplY3RTdG9yZSB3aWxsIG5vdyBmaXJlIG1vcmUgYWJvcnRzCisg
ICAgICAgIGFuZCBlcnJvcnMgaW4gY2FzZSBvZiBsZXZlbGRiIHByb2JsZW1zCisKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0VmFySW50KTogTWFrZSByZXR1cm4gdmFsdWUgaW5kaWNhdGUgbGV2ZWxkYiBlcnJvci4K
KyAgICAgICAgKFdlYkNvcmU6OmdldFN0cmluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgQ2hhbmdl
IHJldHVybiB2YWx1ZSB0byBpbmRpY2F0ZSBsZXZlbGRiIGVycm9yLgorCisgICAgICAgIChXZWJD
b3JlOjpJREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgQWxyZWFkeSBo
YWQgdGhlIGRlc2lyZWQgcmV0dXJuIHZhbHVlIHNlbWFudGljcy4gQXMgYSBjb25zdW1lciBvZgor
ICAgICAgICBnZXRJREJEYXRhYmFzZU1ldGFkYXRhLCB3aWxsIHJldHVybiBhbiBlcnJvciAoY2F1
c2luZyBhbiBhYm9ydCkgbW9yZQorICAgICAgICBvZnRlbi4KKworICAgICAgICAoV2ViQ29yZTo6
SURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIE5lZWRlZCByZXR1
cm4gdmFsdWUgY2hhbmdlLiBXaWxsIHJldHVybiBlcnJvciB0byBEYXRhYmFzZUJhY2tlbmQgdG8K
KyAgICAgICAgaW5kaWNhdGUgbGV2ZWxkYiBwcm9ibGVtcy4KKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6
CisgICAgICAgIFBhc3MgbGV2ZWxkYiBlcnJvcnMgdXAgdG8gY2FsbGVycywgd2hvIGFscmVhZHkg
aGFuZGxlIGludGVybmFsIGVycm9ycy4KKworICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAg
ICBBYm9ydCB0cmFuc2FjdGlvbiBpZiB0aGVyZSB3ZXJlIGxldmVsZGIgcHJvYmxlbXMgZGVsZXRp
bmcgYW4gb2JqZWN0CisgICAgICAgIHN0b3JlLgorCiAyMDEyLTEyLTA2ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBEcmFpbiB0aGUgQ1NTVmFsdWVQ
b29sIG9uIG1lbW9yeSBwcmVzc3VyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjY5
OGFjZDA5NWM1MTQ1YmMwZmQ4NzM0YWRjMmNjZjUwYjUyZTNkYy4uN2UzNGM5NTcwMTY3ZWQ0Mjcx
YjE3MGViZmZhOTM3NTc0N2U3MWE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0xMi0wNCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBBYm9ydCB0cmFuc2FjdGlvbnMgYmVjYXVzZSBvZiBs
ZXZlbGRiIGVycm9ycyBwYXJ0IDQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMzk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAgIFVw
ZGF0ZSBvbmUgb3ZlcnJpZGRlbiBtZXRob2Qgc2lnbmF0dXJlLCBkZWxldGUgYW5vdGhlci4KKwog
MjAxMi0xMi0wNiAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtDaHJvbWl1bV0gRXhwb3NlIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JTY3JvbGxh
YmxlRnJhbWVzRW5hYmxlZCBpbiBXZWJLaXQgQVBJCkBAIC00OTUsNyArNTA1LDcgQEAKIAogICAg
ICAgICAqIERFUFM6CiAKLTIwMTItMTEtMzAgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorMjAxMi0xMi0wNCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgSW5kZXhlZERCOiBQcm9wYWdhdGUgbW9yZSBsZXZlbGRiIGVycm9ycyB0byBJ
REJJbmRleCBhbmQgSURCT2JqZWN0U3RvcmUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzc4MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjc2MTU3ZTY0ZTY3NWQzMWJh
YzUwN2Y4OGY4MmM1ZjhkZTI4MDQ1My4uODg4MmRlYjhjMDI5MTA3ZjU1YzgyMjNjNTVkNjQyODhk
ZDJmMjlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJCYWNraW5nU3RvcmUuY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIGVudW0gSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZUludGVybmFsRXJyb3JUeXBlIHsKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlUmVh
ZEVycm9yR2V0UHJpbWFyeUtleVZpYUluZGV4LAogICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVS
ZWFkRXJyb3JLZXlFeGlzdHNJbkluZGV4LAogICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFk
RXJyb3JWZXJzaW9uRXhpc3RzLAorICAgIElEQkxldmVsREJCYWNraW5nU3RvcmVSZWFkRXJyb3JE
ZWxldGVPYmplY3RTdG9yZSwKICAgICBJREJMZXZlbERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJv
ck1heCwKIH07CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkSW50ZXJuYWxFcnJvcihJREJMZXZl
bERCQmFja2luZ1N0b3JlSW50ZXJuYWxFcnJvclR5cGUgdHlwZSkKQEAgLTEyMSwxNyArMTIyLDE3
IEBAIHN0YXRpYyB2b2lkIHB1dEludChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBj
b25zdCBMZXZlbERCU2xpY2UmIGtleSwgaW50CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEQk9y
VHJhbnNhY3Rpb24+Ci1zdGF0aWMgYm9vbCBnZXRWYXJJbnQoREJPclRyYW5zYWN0aW9uKiBkYiwg
Y29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIGludDY0X3QmIGZvdW5kSW50KQorV0FSTl9VTlVTRURf
UkVUVVJOIHN0YXRpYyBib29sIGdldFZhckludChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBM
ZXZlbERCU2xpY2UmIGtleSwgaW50NjRfdCYgZm91bmRJbnQsIGJvb2wmIGZvdW5kKQogewogICAg
IFZlY3RvcjxjaGFyPiByZXN1bHQ7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgIGJvb2wg
b2sgPSBkYi0+c2FmZUdldChrZXksIHJlc3VsdCwgZm91bmQpOwotICAgIC8vIEZJWE1FOiBOb3Rp
ZnkgdGhlIGNhbGxlciBpZiAhb2suCi0gICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAgIGlm
ICghZm91bmQpCisgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
Zm91bmQpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGRlY29kZVZhckludChy
ZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpLCBmb3VuZEludCkgPT0gcmVzdWx0LmVuZCgpOwor
ICAgIGZvdW5kID0gZGVjb2RlVmFySW50KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIGZv
dW5kSW50KSA9PSByZXN1bHQuZW5kKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB2
b2lkIHB1dFZhckludChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBMZXZl
bERCU2xpY2UmIGtleSwgaW50NjRfdCB2YWx1ZSkKQEAgLTE0MCwxNSArMTQxLDE1IEBAIHN0YXRp
YyB2b2lkIHB1dFZhckludChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBM
ZXZlbERCU2xpY2UmIGtleSwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlv
bj4KLXN0YXRpYyBib29sIGdldFN0cmluZyhEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBMZXZl
bERCU2xpY2UmIGtleSwgU3RyaW5nJiBmb3VuZFN0cmluZykKK1dBUk5fVU5VU0VEX1JFVFVSTiBz
dGF0aWMgYm9vbCBnZXRTdHJpbmcoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3QgTGV2ZWxEQlNs
aWNlJiBrZXksIFN0cmluZyYgZm91bmRTdHJpbmcsIGJvb2wmIGZvdW5kKQogewogICAgIFZlY3Rv
cjxjaGFyPiByZXN1bHQ7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIGZvdW5kID0gZmFs
c2U7CiAgICAgYm9vbCBvayA9IGRiLT5zYWZlR2V0KGtleSwgcmVzdWx0LCBmb3VuZCk7Ci0gICAg
Ly8gRklYTUU6IE5vdGlmeSB0aGUgY2FsbGVyIGlmICFvay4KLSAgICBBU1NFUlRfVU5VU0VEKG9r
LCBvayk7Ci0gICAgaWYgKCFmb3VuZCkKKyAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBmb3VuZFN0
cmluZyA9IGRlY29kZVN0cmluZyhyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTM2NCwyNSArMzY1LDM1IEBAIFZlY3RvcjxTdHJpbmc+IElEQkJhY2tp
bmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcygpCiAgICAgcmV0dXJuIGZvdW5kTmFtZXM7CiB9CiAK
LWJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSogbWV0YWRhdGEpCitib29sIElEQkJhY2tpbmdT
dG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFi
YXNlTWV0YWRhdGEqIG1ldGFkYXRhLCBib29sJiBmb3VuZCkKIHsKICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsK
KyAgICBmb3VuZCA9IGZhbHNlOwogCi0gICAgYm9vbCBvayA9IGdldEludChtX2RiLmdldCgpLCBr
ZXksIG1ldGFkYXRhLT5pZCk7Ci0gICAgaWYgKCFvaykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGZvdW5kID0gZ2V0SW50KG1fZGIuZ2V0KCksIGtleSwgbWV0YWRhdGEtPmlkKTsKKyAgICBp
ZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG9rID0gZ2V0U3RyaW5nKG1f
ZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFi
YXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgbWV0YWRhdGEtPnZlcnNpb24pOworICAgIGJv
b2wgb2sgPSBnZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2Rl
KG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCBtZXRhZGF0
YS0+dmVyc2lvbiwgZm91bmQpOwogICAgIGlmICghb2spIHsKICAgICAgICAgSW50ZXJuYWxFcnJv
cihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yR2V0SURCRGF0YWJhc2VNZXRhRGF0YSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgaWYgKCFmb3VuZCkgeworICAgICAg
ICBJbnRlcm5hbEVycm9yKElEQkxldmVsREJCYWNraW5nU3RvcmVDb25zaXN0ZW5jeUVycm9yKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIG9rID0gZ2V0VmFySW50KG1fZGIu
Z2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNl
TWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgbWV0YWRhdGEtPmludFZlcnNpb24pOworICAg
IG9rID0gZ2V0VmFySW50KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZSht
ZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgbWV0YWRh
dGEtPmludFZlcnNpb24sIGZvdW5kKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIEludGVybmFs
RXJyb3IoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZVJlYWRFcnJvckdldElEQkRhdGFiYXNlTWV0YURh
dGEpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIGlmICghZm91bmQpIHsKKyAg
ICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlQ29uc2lzdGVuY3lFcnJv
cik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBpZiAobWV0YWRhdGEtPmlu
dFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24pCiAgICAg
ICAgIG1ldGFkYXRhLT5pbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJz
aW9uOwogCkBAIC00NTksNyArNDcwLDExIEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpkZWxldGVE
YXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgT3duUHRyPExldmVsREJXcml0ZU9ubHlU
cmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb246OmNy
ZWF0ZShtX2RiLmdldCgpKTsKIAogICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGE7Ci0g
ICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsICZtZXRhZGF0YSkpCisgICAgYm9v
bCBzdWNjZXNzID0gZmFsc2U7CisgICAgYm9vbCBvayA9IGdldElEQkRhdGFiYXNlTWV0YURhdGEo
bmFtZSwgJm1ldGFkYXRhLCBzdWNjZXNzKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNv
bnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZSht
ZXRhZGF0YS5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFtZSk7CkBAIC02MjIsMTMg
KzYzNywyMiBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpbwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIElEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKQorYm9vbCBJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkJhY2tpbmdT
dG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVs
REJUcmFuc2FjdGlvbiA9IElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb246OmxldmVsREJUcmFu
c2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwogCiAgICAgU3RyaW5nIG9iamVjdFN0b3JlTmFtZTsK
LSAgICBnZXRTdHJpbmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtl
eTo6TmFtZSksIG9iamVjdFN0b3JlTmFtZSk7CisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAg
IGJvb2wgb2sgPSBnZXRTdHJpbmcobGV2ZWxEQlRyYW5zYWN0aW9uLCBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6TmFtZSksIG9iamVjdFN0b3JlTmFtZSwgZm91bmQpOworICAgIGlmICghb2spIHsK
KyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlUmVhZEVycm9yRGVs
ZXRlT2JqZWN0U3RvcmUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICgh
Zm91bmQpIHsKKyAgICAgICAgSW50ZXJuYWxFcnJvcihJREJMZXZlbERCQmFja2luZ1N0b3JlQ29u
c2lzdGVuY3lFcnJvcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBkZWxl
dGVSYW5nZShsZXZlbERCVHJhbnNhY3Rpb24sIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwKSwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6
ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKTsKIApAQCAtNjM4LDYgKzY2
Miw3IEBAIHZvaWQgSURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvCiAgICAgZGVsZXRlUmFuZ2UobGV2ZWxEQlRy
YW5zYWN0aW9uLCBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgMCwgMCksIEluZGV4TWV0YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkKSk7CiAKICAgICBjbGVhck9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLCBkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IElEQktleSYga2V5LCBTdHJpbmcmIHJlY29yZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggZDNhM2NmOThiMzYzZTQ5ZGFh
ZWViZDkzMzA2ODNkODdlYzYwYmE3NC4uZTZlZDRkODA1MTgwNmRlMWZiMGI3N2Q5MjY2OTZlNDMx
ZWRmZThlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmlu
ZyYgcGF0aEJhc2UsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNr
ZW5kSW1wbCopOwogCiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXREYXRhYmFzZU5hbWVz
KCk7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5n
JiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKik7CisgICAgdmlydHVhbCBib29sIGdldElEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKiwg
Ym9vbCYgc3VjY2VzcykgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZpcnR1YWwgYm9vbCBjcmVh
dGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKTsKICAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiwgaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKICAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGludFZlcnNpb24pOwpAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFZlY3RvcjxJREJPYmplY3RTdG9yZU1ldGFkYXRh
PiBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpOwotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwgYm9vbCBkZWxl
dGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAogICAg
IGNsYXNzIFJlY29yZElkZW50aWZpZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZWNvcmRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggYWU3YWYwZWI0OGU3
MzA5NjFkOGE1ZmFlMWQwNWEyNzZiZTQ2NmIwYi4uZWNiNjFlZTFmOTI5YTIwMTYyMGFmNmZhMjdk
ZDNiZTVjY2JhMTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTIzNiw4ICsyMzYsMTEg
QEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBT
dHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG8KIAogYm9vbCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpvcGVuSW50ZXJuYWwoKQogewotICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5n
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1fbWV0YWRhdGEubmFtZSwgJm1fbWV0YWRhdGEpOworICAg
IGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIGJvb2wgb2sgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0
SURCRGF0YWJhc2VNZXRhRGF0YShtX21ldGFkYXRhLm5hbWUsICZtX21ldGFkYXRhLCBzdWNjZXNz
KTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHN1Y2Nlc3MgPT0gKG1fbWV0YWRhdGEuaWQgIT0g
SW52YWxpZElkKSwgInN1Y2Nlc3MgPSAlcywgbV9pZCA9ICVsbGQiLCBzdWNjZXNzID8gInRydWUi
IDogImZhbHNlIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX21ldGFkYXRhLmlkKSk7CisgICAg
aWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChzdWNjZXNzKSB7CiAgICAg
ICAgIGxvYWRPYmplY3RTdG9yZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMTgsNyAr
MzIxLDExIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUo
aW50NjRfdCBpZCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kCiB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwqIHRyYW5zYWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiRGVsZXRlT2JqZWN0
U3RvcmVPcGVyYXRpb24iKTsKLSAgICBtX2RhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+ZGVsZXRl
T2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0
YWJhc2UtPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCkpOworICAgIGJvb2wgb2sgPSBtX2RhdGFi
YXNlLT5tX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2UtPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlk
KCkpOworICAgIGlmICghb2spIHsKKyAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVy
cm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBvYmplY3Qgc3RvcmUuIik7CisgICAg
ICAgIHRyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7CisgICAgfQogfQogCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OlZlcnNpb25DaGFuZ2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbCogdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4IDU1ZmY1YjhkMGE5ODEzODM1
MDY5NzliM2ZhNDc4MWJmMGNkYmFhM2EuLjliMTdhZGQxMTU5N2EzMWEyYmQ1ZGU3ZDJhODg0YWJl
MWU2MTI2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFr
ZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFr
ZUJhY2tpbmdTdG9yZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIElEQkZha2VCYWNraW5nU3RvcmUgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGdldERhdGFiYXNlTmFtZXMoKSBPVkVSUklE
RSB7IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOyB9Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhKikg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJh
c2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGEqLCBib29s
JiBmb3VuZCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjcmVh
dGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEo
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJS
SURFIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNl
SW50VmVyc2lvbihUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGludDY0X3QgdmVyc2lvbikg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTQxLDcgKzQxLDYgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBWZWN0b3I8SURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gZ2V0T2JqZWN0U3RvcmVz
KGludDY0X3QgZGF0YWJhc2VJZCkgT1ZFUlJJREUgeyByZXR1cm4gVmVjdG9yPElEQk9iamVjdFN0
b3JlTWV0YWRhdGE+KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoVHJh
bnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50KSBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0
U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCkgT1ZFUlJJREUgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcHV0UmVjb3JkKFRyYW5zYWN0
aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QktleSYsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>