<?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>47511</bug_id>
          
          <creation_ts>2010-10-11 15:59:42 -0700</creation_ts>
          <short_desc>[Chromium] Add plumbing for synchronous indexedDB exceptions</short_desc>
          <delta_ts>2010-10-11 17:19:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>andreip</cc>
    
    <cc>fishd</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>292730</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-11 15:59:42 -0700</bug_when>
    <thetext>[Chromium] Add plumbing for synchronous indexedDB exceptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292731</commentid>
    <comment_count>1</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-11 16:02:07 -0700</bug_when>
    <thetext>Nate/Darin can one of you guys review today?  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292733</commentid>
    <comment_count>2</comment_count>
      <attachid>70487</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-11 16:02:18 -0700</bug_when>
    <thetext>Created attachment 70487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292747</commentid>
    <comment_count>3</comment_count>
      <attachid>70487</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-10-11 16:19:00 -0700</bug_when>
    <thetext>Comment on attachment 70487
Patch

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

r+ provided my comments/guesses are correct :)

&gt; WebKit/chromium/public/WebExceptionCode.h:36
&gt; +// This should match how exception code is defined in WebCore.

Nit: replace &apos;exception code&apos; with &apos;ExceptionCode&apos; so it&apos;s clear what this is referring to?

&gt; WebKit/chromium/public/WebIDBCursor.h:65
&gt; +    virtual void update(const WebSerializedScriptValue&amp; value, WebIDBCallbacks* callbacks, WebExceptionCode&amp;)
&gt; +    {
&gt; +        update(value, callbacks);
&gt; +    }
&gt; +    virtual void update(const WebSerializedScriptValue&amp; value, WebIDBCallbacks* callbacks)
&gt; +    {
&gt; +        WebExceptionCode ec = 0;
&gt; +        update(value, callbacks, ec);
&gt; +    }

It appears that a bunch of these implementations are circular.  I&apos;m assuming that this code is unused and these are just to ensure the compiler doesn&apos;t give unused variable warnings?

&gt; WebKit/chromium/public/WebIDBCursor.h:89
&gt; +    /*
&gt; +    virtual void update(const WebSerializedScriptValue&amp;, WebIDBCallbacks*, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; +    virtual void continueFunction(const WebIDBKey&amp;, WebIDBCallbacks*, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; +    virtual void remove(WebIDBCallbacks*, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; +    */

Here and below:  Why are these commented out?  Are they going to replace the implementations above when the FIXMEs are resolved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292764</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-11 16:57:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 70487 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70487&amp;action=review
&gt; 
&gt; r+ provided my comments/guesses are correct :)
&gt; 
&gt; &gt; WebKit/chromium/public/WebExceptionCode.h:36
&gt; &gt; +// This should match how exception code is defined in WebCore.
&gt; 
&gt; Nit: replace &apos;exception code&apos; with &apos;ExceptionCode&apos; so it&apos;s clear what this is referring to?

done
 
&gt; &gt; WebKit/chromium/public/WebIDBCursor.h:65
&gt; &gt; +    virtual void update(const WebSerializedScriptValue&amp; value, WebIDBCallbacks* callbacks, WebExceptionCode&amp;)
&gt; &gt; +    {
&gt; &gt; +        update(value, callbacks);
&gt; &gt; +    }
&gt; &gt; +    virtual void update(const WebSerializedScriptValue&amp; value, WebIDBCallbacks* callbacks)
&gt; &gt; +    {
&gt; &gt; +        WebExceptionCode ec = 0;
&gt; &gt; +        update(value, callbacks, ec);
&gt; &gt; +    }
&gt; 
&gt; It appears that a bunch of these implementations are circular.  I&apos;m assuming that this code is unused and these are just to ensure the compiler doesn&apos;t give unused variable warnings?

They&apos;re circular because the old implementation needs to point to the new _and_ the new needs to point to the old since Chrome and WebKit both implement and consume the API.

&gt; &gt; WebKit/chromium/public/WebIDBCursor.h:89
&gt; &gt; +    /*
&gt; &gt; +    virtual void update(const WebSerializedScriptValue&amp;, WebIDBCallbacks*, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; +    virtual void continueFunction(const WebIDBKey&amp;, WebIDBCallbacks*, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; +    virtual void remove(WebIDBCallbacks*, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; +    */
&gt; 
&gt; Here and below:  Why are these commented out?  Are they going to replace the implementations above when the FIXMEs are resolved?

Yup....just wanted to save myself some effort.  They&apos;ll be uncommented once WebKit rolls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292769</commentid>
    <comment_count>5</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-10-11 17:06:20 -0700</bug_when>
    <thetext>Ok, thanks.

(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 70487 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70487&amp;action=review
&gt; &gt; 
&gt; &gt; r+ provided my comments/guesses are correct :)
&gt; &gt; 
&gt; &gt; &gt; WebKit/chromium/public/WebExceptionCode.h:36
&gt; &gt; &gt; +// This should match how exception code is defined in WebCore.
&gt; &gt; 
&gt; &gt; Nit: replace &apos;exception code&apos; with &apos;ExceptionCode&apos; so it&apos;s clear what this is referring to?
&gt; 
&gt; done
&gt; 
&gt; &gt; &gt; WebKit/chromium/public/WebIDBCursor.h:65
&gt; &gt; &gt; +    virtual void update(const WebSerializedScriptValue&amp; value, WebIDBCallbacks* callbacks, WebExceptionCode&amp;)
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        update(value, callbacks);
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +    virtual void update(const WebSerializedScriptValue&amp; value, WebIDBCallbacks* callbacks)
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        WebExceptionCode ec = 0;
&gt; &gt; &gt; +        update(value, callbacks, ec);
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; It appears that a bunch of these implementations are circular.  I&apos;m assuming that this code is unused and these are just to ensure the compiler doesn&apos;t give unused variable warnings?
&gt; 
&gt; They&apos;re circular because the old implementation needs to point to the new _and_ the new needs to point to the old since Chrome and WebKit both implement and consume the API.
&gt; 
&gt; &gt; &gt; WebKit/chromium/public/WebIDBCursor.h:89
&gt; &gt; &gt; +    /*
&gt; &gt; &gt; +    virtual void update(const WebSerializedScriptValue&amp;, WebIDBCallbacks*, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; &gt; +    virtual void continueFunction(const WebIDBKey&amp;, WebIDBCallbacks*, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; &gt; +    virtual void remove(WebIDBCallbacks*, WebExceptionCode&amp;) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; &gt; +    */
&gt; &gt; 
&gt; &gt; Here and below:  Why are these commented out?  Are they going to replace the implementations above when the FIXMEs are resolved?
&gt; 
&gt; Yup....just wanted to save myself some effort.  They&apos;ll be uncommented once WebKit rolls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292777</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-11 17:19:38 -0700</bug_when>
    <thetext>Committed r69541: &lt;http://trac.webkit.org/changeset/69541&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70487</attachid>
            <date>2010-10-11 16:02:18 -0700</date>
            <delta_ts>2010-10-11 16:19:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47511-20101011160216.patch</filename>
            <type>text/plain</type>
            <size>21079</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGJjOTQwZGU4YjlmMDUxMDI5ZjgwNDc2YjBhYzc1NGUzZjcwZDFjODQu
LjZmMjAxMzgxNjUxODRkNmQwMDFlOTE3MDQ5MzBkOWE4MjM1ZDU4NzcgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQwIEBACisyMDEwLTEwLTExICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtDaHJvbWl1bV0gQWRkIHBsdW1iaW5nIGZvciBzeW5jaHJvbm91cyBpbmRleGVkREIgZXhjZXB0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc1
MTEKKworICAgICAgICBBZGQgYSBXZWJFeGNlcHRpb25Db2RlIGZpbGUgKGFscmVhZHkgcnVuIGJ5
IGZpc2hkKSBhbmQgYWRkIHZlcnNpb25zIG9mCisgICAgICAgIGVhY2ggYXBwbGljYWJsZSBtZXRo
b2QgdGhhdCB0YWtlIHN1Y2ggYSBwYXJhbWV0ZXIuICBBIGZvbGxvdyB1cCBwYXRjaAorICAgICAg
ICB3aWxsIGJlIHBvc3RlZCB3aXRoIHRoZSBtZWF0LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViRXhjZXB0aW9uQ29kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
dWJsaWMvV2ViSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6dXBk
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpyZW1vdmUpOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6b2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6cmVtb3ZlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6c2V0VmVyc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisgICAgICAgICogcHVi
bGljL1dlYklEQkluZGV4Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4OjpvcGVuT2Jq
ZWN0Q3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXg6Om9wZW5LZXlDdXJzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleDo6Z2V0T2JqZWN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCSW5kZXg6OmdldEtleSk6CisgICAgICAgICogcHVibGljL1dlYklEQk9iamVj
dFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpnZXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCT2JqZWN0U3RvcmU6OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3Jl
OjppbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpyZW1vdmVJbmRl
eCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKwog
MjAxMC0xMC0wNiAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGJjM2I4Y2E3MzNk
OGY1OGZhNTkxNmI5NmI3Y2Y4ZmRmOTZkZTBlMzAuLjdiYWI2YzY0M2JhOGQ1YjI5YWJjMmIxZmZi
MDI0NzRhM2E2ZDY4ZjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xNDksNiArMTQ5LDcgQEAKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkRyYWdEYXRhLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRWRpdGluZ0FjdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkVsZW1l
bnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFeGNlcHRpb25Db2RlLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUNob29zZXJQYXJhbXMuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJGaWxlRXJyb3IuaCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkV4Y2VwdGlvbkNvZGUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXhj
ZXB0aW9uQ29kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjZDc4NzIxZmY3NzZkMWMwNWEzZDBhNzFiOTJhODRi
OTUxYTRmYjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4
Y2VwdGlvbkNvZGUuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFeGNlcHRpb25Db2RlX2gK
KyNkZWZpbmUgV2ViRXhjZXB0aW9uQ29kZV9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBU
aGlzIHNob3VsZCBtYXRjaCBob3cgZXhjZXB0aW9uIGNvZGUgaXMgZGVmaW5lZCBpbiBXZWJDb3Jl
LgordHlwZWRlZiBpbnQgV2ViRXhjZXB0aW9uQ29kZTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJz
b3IuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKaW5kZXggMDViZDUx
YWE3M2E2NGUyOWU1ZTlhNDVlYmZmYzhlMjIyNTQwODE0Mi4uYTE3MzY1YmZiZTE5Y2E3ZjlhYzA1
OTU5NWYxM2I0YWMzZDJiYjUyYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJDdXJzb3IuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5o
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYklEQkN1cnNvcl9oCiAKICNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiV2Vi
SURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCS2V5LmgiCiAjaW5jbHVkZSAiV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC01Miw5ICs1Myw0MCBAQCBwdWJsaWM6CiAgICAgLy8g
T25lIG9yIHRoZSBvdGhlciB3aWxsIHNldCwgZGVwZW5kaW5nIG9uIHdoYXQgdHlwZSBvZiBjdXJz
b3IgdGhpcyBpcy4KICAgICB2aXJ0dWFsIHZvaWQgdmFsdWUoV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdlYklEQktleSYgaWRiS2V5KSBjb25zdCB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZShj
b25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBXZWJJREJDYWxsYmFja3MqKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0
aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJJREJDYWxsYmFja3Mq
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIEZJWE1FOiBSZW1vdmUu
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUm
IHZhbHVlLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYpCisg
ICAgeworICAgICAgICB1cGRhdGUodmFsdWUsIGNhbGxiYWNrcyk7CisgICAgfQorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgV2Vi
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCisgICAgeworICAgICAgICBXZWJFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICAgICAgdXBkYXRlKHZhbHVlLCBjYWxsYmFja3MsIGVjKTsKKyAgICB9Cisg
ICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiBrZXksIFdl
YklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJikKKyAgICB7CisgICAg
ICAgIGNvbnRpbnVlRnVuY3Rpb24oa2V5LCBjYWxsYmFja3MpOworICAgIH0KKyAgICB2aXJ0dWFs
IHZvaWQgY29udGludWVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MpCisgICAgeworICAgICAgICBXZWJFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICAgICAgY29udGludWVGdW5jdGlvbihrZXksIGNhbGxiYWNrcywgZWMpOworICAgIH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNl
cHRpb25Db2RlJikKKyAgICB7CisgICAgICAgIHJlbW92ZShjYWxsYmFja3MpOworICAgIH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzKQorICAgIHsK
KyAgICAgICAgV2ViRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIHJlbW92ZShjYWxsYmFj
a3MsIGVjKTsKKyAgICB9CisKKyAgICAvKgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3Qg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9u
Q29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lk
IGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2Vi
RXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZShXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJikgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAqLwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFi
YXNlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggZmUw
N2FjODI2YTZkY2I2MGZlMjA1ZGE0MjVmMjJlZDAwYzM2YTFjMC4uNGU5MmJkYjk2NDcyNmRhYzlh
NTYxNThmZWViNDA5NWM1OGNlMGU2NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0
YWJhc2UuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5j
bHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTYyLDI5ICs2Myw2MyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBXZWJET01TdHJpbmdMaXN0KCk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFJl
bW92ZSBvbmNlIHdlIHVwZGF0ZSBDaHJvbWl1bSBzaWRlLgotICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJJREJDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikKLSAgICB7
IAorICAgIC8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgbmV4dCByb2xsLgorICAgIHZpcnR1YWwgV2Vi
SURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgdW5zaWdu
ZWQgc2hvcnQgbW9kZSkKKyAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIC8vIFRyYW5zZmVycyBvd25lcnNoaXAg
b2YgdGhlIFdlYklEQk9iamVjdFN0b3JlIHRvIHRoZSBjYWxsZXIuCi0gICAgdmlydHVhbCBXZWJJ
REJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCB1bnNpZ25l
ZCBzaG9ydCBtb2RlKQorICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
V2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeyAKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU9iamVjdFN0
b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uKTsKKyAgICB9Cisg
ICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQorICAgIHsKKyAgICAgICAg
V2ViRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIHJldHVybiBjcmVhdGVPYmplY3RTdG9y
ZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbiwgZWMpOworICAgIH0K
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUm
KQorICAgIHsKKyAgICAgICAgcmVtb3ZlT2JqZWN0U3RvcmUobmFtZSwgdHJhbnNhY3Rpb24pOwor
ICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCisgICAgeworICAg
ICAgICBXZWJFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgcmVtb3ZlT2JqZWN0U3RvcmUo
bmFtZSwgdHJhbnNhY3Rpb24sIGVjKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHNldFZlcnNp
b24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
V2ViRXhjZXB0aW9uQ29kZSYpCiAgICAgeworICAgICAgICBzZXRWZXJzaW9uKHZlcnNpb24sIGNh
bGxiYWNrcyk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0
cmluZyYgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MpCisgICAgeworICAgICAg
ICBXZWJFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgc2V0VmVyc2lvbih2ZXJzaW9uLCBj
YWxsYmFja3MsIGVjKTsKKyAgICB9CisgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1v
ZGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dCwgV2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeworICAg
ICAgICByZXR1cm4gdHJhbnNhY3Rpb24obmFtZXMsIG1vZGUsIHRpbWVvdXQpOworICAgIH0KKyAg
ICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJp
bmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0
KQorICAgIHsKKyAgICAgICAgV2ViRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIHJldHVy
biB0cmFuc2FjdGlvbihuYW1lcywgbW9kZSwgdGltZW91dCwgZWMpOworICAgIH0KKy8qCisgICAg
dmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikKKyAgICB7IAogICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIGFmdGVyIFdlYktpdCByb2xsLgotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxi
YWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3Qg
V2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0
aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgLy8gVHJhbnNm
ZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCVHJhbnNhY3Rpb24gdG8gdGhlIGNhbGxlci4KLSAg
ICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJp
bmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0
KQorICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYkRP
TVN0cmluZ0xpc3QmIG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBsb25nIHRp
bWVvdXQsIFdlYkV4Y2VwdGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisqLwogICAgIHZpcnR1YWwg
dm9pZCBjbG9zZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKaW5kZXggMGQxNTQxYzcxMWNhZTNmMmQyMzE0NmI3
NzliM2RmY2VjMjhkOGMzZC4uN2M3Nzg3ODdlODMwNjAwNTNlYjNlZDhjMGE4Zjk0ZTk2ZGI5MDdi
ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaApAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBXZWJJREJJbmRleF9oCiAjZGVmaW5lIFdlYklEQkluZGV4X2gKIAorI2luY2x1ZGUg
IldlYkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgogCkBAIC02MSwyNSArNjIsNDkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IG9wZW5PYmplY3RDdXJzb3Ig
LT4gb3BlbkN1cnNvciBhbmQgZ2V0T2JqZWN0IC0+IGdldC4KLSAgICB2aXJ0dWFsIHZvaWQgb3Bl
bk9iamVjdEN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVj
dGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGNv
bnN0IFdlYklEQktleVJhbmdlJiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uKQorICAgIHZpcnR1YWwgdm9pZCBvcGVuT2JqZWN0Q3Vyc29yKGNvbnN0IFdlYklEQktleVJh
bmdlJiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJREJDYWxsYmFja3MqIGNh
bGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRp
b25Db2RlJikKICAgICB7Ci0gICAgICAgIG9wZW5LZXlDdXJzb3IocmFuZ2UsIGRpcmVjdGlvbiwg
Y2FsbGJhY2tzLCB0cmFuc2FjdGlvbik7CisgICAgICAgIFdlYkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgICAgICBvcGVuT2JqZWN0Q3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNrcywg
dHJhbnNhY3Rpb24sIGVjKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIG9wZW5PYmplY3RDdXJz
b3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmIHJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24pCisgICAgeworICAgICAgICBvcGVuT2JqZWN0Q3Vyc29yKHJhbmdlLCBkaXJlY3Rp
b24sIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgb3Bl
bktleUN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeworICAgICAgICBXZWJF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgb3BlbktleUN1cnNvcihyYW5nZSwgZGlyZWN0
aW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uLCBlYyk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCBvcGVuS2V5Q3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiByYW5nZSwgdW5zaWduZWQgc2hv
cnQgZGlyZWN0aW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAgb3BlbkN1cnNvcihyYW5nZSwg
ZGlyZWN0aW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgb3BlbktleUN1cnNv
cihyYW5nZSwgZGlyZWN0aW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKTsKICAgICB9Ci0gICAg
dmlydHVhbCB2b2lkIGdldE9iamVjdChjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3Mq
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldChjb25zdCBXZWJJREJLZXkmIHJhbmdlLCBXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQorICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3QoY29uc3QgV2ViSURCS2V5JiBrZXksIFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIFdlYkV4Y2VwdGlvbkNvZGUmKQogICAgIHsKLSAgICAgICAgZ2V0S2V5KHJhbmdlLCBjYWxs
YmFja3MsIHRyYW5zYWN0aW9uKTsKKyAgICAgICAgV2ViRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgICAgIGdldE9iamVjdChrZXksIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24sIGVjKTsKICAgICB9
Ci0gICAgdmlydHVhbCB2b2lkIGdldEtleShjb25zdCBXZWJJREJLZXkmIHJhbmdlLCBXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQorICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3QoY29uc3QgV2ViSURCS2V5JiBrZXksIFdlYklE
QkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24pCiAgICAgewotICAgICAgICBnZXQocmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pOwor
ICAgICAgICBnZXRPYmplY3Qoa2V5LCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKTsKICAgICB9Cisg
ICAgdmlydHVhbCB2b2lkIGdldEtleShjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2Vi
RXhjZXB0aW9uQ29kZSYpCisgICAgeworICAgICAgICBXZWJFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICAgICAgZ2V0S2V5KGtleSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbiwgZWMpOworICAgIH0K
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KGNvbnN0IFdlYklEQktleSYga2V5LCBXZWJJREJDYWxs
YmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQor
ICAgIHsKKyAgICAgICAgZ2V0S2V5KGtleSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbik7CisgICAg
fQorCisgICAgLyoKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbk9iamVjdEN1cnNvcihjb25zdCBXZWJJ
REJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihjb25z
dCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0KGNv
bnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGdldEtleShjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3Mq
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICovCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAppbmRleCAyNGE0
MzJlMWY4MzFmNjI2NzE3ODI5MTI5Yjc0MDBiMjViNjY1MjE3Li45OTMzYjIxY2Y1OWUxZDM5Y2E0
NDhlNzUxYzBlNGQzMDIwNjU4MjMyIDEwMDc1NQotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQk9iamVjdFN0b3JlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJP
YmplY3RTdG9yZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYklEQk9iamVjdFN0b3Jl
X2gKIAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKQEAgLTU4LDI3ICs1OSw4OSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBXZWJET01TdHJpbmdMaXN0KCk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGdldChjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHB1dChjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBj
b25zdCBXZWJJREJLZXkmLCBib29sIGFkZE9ubHksIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
LSAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2Ugd2UgdXBkYXRlIENocm9taXVtIHNpZGUuCi0gICAg
dmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgV2ViSURCQ2FsbGJhY2tzKikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJ
bmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikKKyAgICAvLyBGSVhNRTogUmVtb3Zl
LgorICAgIHZpcnR1YWwgdm9pZCBnZXQoY29uc3QgV2ViSURCS2V5JiBrZXksIFdlYklEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdl
YkV4Y2VwdGlvbkNvZGUmKQorICAgIHsKKyAgICAgICAgZ2V0KGtleSwgY2FsbGJhY2tzLCB0cmFu
c2FjdGlvbik7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBnZXQoY29uc3QgV2ViSURCS2V5JiBr
ZXksIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24pCisgICAgeworICAgICAgICBXZWJFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICAgICAgZ2V0KGtleSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbiwgZWMpOworICAgIH0KKyAgICB2
aXJ0dWFsIHZvaWQgcHV0KGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNv
bnN0IFdlYklEQktleSYga2V5LCBib29sIGFkZE9ubHksIFdlYklEQkNhbGxiYWNrcyogY2FsbGJh
Y2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNv
ZGUmKQorICAgIHsKKyAgICAgICAgcHV0KHZhbHVlLCBrZXksIGFkZE9ubHksIGNhbGxiYWNrcywg
dHJhbnNhY3Rpb24pOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcHV0KGNvbnN0IFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IFdlYklEQktleSYga2V5LCBib29sIGFkZE9u
bHksIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24pCisgICAgeworICAgICAgICBXZWJFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICAgICAgcHV0KHZhbHVlLCBrZXksIGFkZE9ubHksIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24sIGVj
KTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBXZWJJREJLZXkmIGtleSwg
V2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeworICAgICAgICByZW1vdmUoa2V5LCBj
YWxsYmFja3MsIHRyYW5zYWN0aW9uKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShj
b25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdl
YklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKKyAgICB7CisgICAgICAgIFdlYkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgICAgICByZW1vdmUoa2V5LCBjYWxsYmFja3MsIHRyYW5zYWN0aW9u
LCBlYyk7CisgICAgfQorICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJikK
KyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUs
IHRyYW5zYWN0aW9uKTsKKyAgICB9CisgICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCisgICAgeworICAg
ICAgICBXZWJFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUluZGV4
KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgdHJhbnNhY3Rpb24sIGVjKTsKKyAgICB9CisgICAgdmly
dHVhbCBXZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNlcHRp
b25Db2RlJikKKyAgICB7CisgICAgICAgIHJldHVybiBpbmRleChuYW1lKTsKKyAgICB9CisgICAg
dmlydHVhbCBXZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQorICAgIHsK
KyAgICAgICAgV2ViRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIHJldHVybiBpbmRleChu
YW1lLCBlYyk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhj
ZXB0aW9uQ29kZSYpCisgICAgeworICAgICAgICByZW1vdmVJbmRleChuYW1lLCB0cmFuc2FjdGlv
bik7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKKyAgICB7CisgICAg
ICAgIFdlYkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICByZW1vdmVJbmRleChuYW1lLCB0
cmFuc2FjdGlvbiwgZWMpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihjb25z
dCBXZWJJREJLZXlSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgV2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeworICAgICAgICBvcGVuQ3Vyc29yKHJhbmdlLCBk
aXJlY3Rpb24sIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pOworICAgIH0KKyAgICB2aXJ0dWFsIHZv
aWQgb3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYgcmFuZ2UsIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbikKKyAgICB7CisgICAgICAgIFdlYkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgICAgICBvcGVuQ3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24sIGNhbGxiYWNrcywgdHJh
bnNhY3Rpb24sIGVjKTsKKyAgICB9CisKKyAgICAvKgorICAgIHZpcnR1YWwgdm9pZCBnZXQoY29u
c3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
LCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcHV0KGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0
IFdlYklEQktleSYsIGJvb2wgYWRkT25seSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYklEQktleSYsIFdlYklE
QkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCBXZWJJREJJbmRl
eCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtl
eVBhdGgsIGJvb2wgdW5pcXVlLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlv
bkNvZGUmKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUg
V2ViSURCSW5kZXggdG8gdGhlIGNhbGxlci4KLSAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBpbmRl
eChjb25zdCBXZWJTdHJpbmcmIG5hbWUpCisgICAgdmlydHVhbCBXZWJJREJJbmRleCogaW5kZXgo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNlcHRpb25Db2RlJikKICAgICB7CiAgICAgICAg
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSB3ZSB1cGRhdGUgQ2hyb21pdW0gc2lkZS4KLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxs
YmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
b3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlv
biwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIEZJWE1FOiBmaW5pc2guCisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYs
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICAqLwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="60345"
          type_id="1"
          status="+"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>