<?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>16829</bug_id>
          
          <creation_ts>2008-01-10 15:52:15 -0800</creation_ts>
          <short_desc>NPAPI: NPN_SetException() sets exception on the Global ExecState instead of local</short_desc>
          <delta_ts>2009-02-05 07:06:35 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Moskovich">playmobil</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>dimitri</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>66835</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2008-01-10 15:52:15 -0800</bug_when>
    <thetext>Calling NPN_SetException from an NPAPI plugin doesn&apos;t work correctly (exception not visible in calling Javascript).

If you pass in the plug-in object as the first parameter to NPN_SetException(), then the test in NP_jsobject.cpp#369 - _NPN_SetException() [o-&gt;_class == NPScriptObjectClass] fails and the function does nothing.

If I retrieve the Window object via a call to NPN_GetValue() using NPNVWindowNPObject and pass that into NPN_SetException(), then the aforementioned test succeeds, however...

_NPN_SetException() sets the exception on what appears to be the global Execstate:
ExecState* exec = rootObject-&gt;globalObject()-&gt;globalExec();

But this has no effect, as the local ExecState is the one checked for an exception- see nodes.cpp#3645 ExprStatementNode::execute().

So the exception is never propagated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66836</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-10 15:58:25 -0800</bug_when>
    <thetext>This is definitely a bug.  When we fix this, we&apos;ll need to add an exception-based test case to the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66837</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2008-01-10 16:01:52 -0800</bug_when>
    <thetext>In the meantime, can anyone suggest a workaround so we can throw JS Exceptions from an NPAPI plugin in Safari?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66874</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-10 21:26:06 -0800</bug_when>
    <thetext>One (somewhat lame) solution would be to set a particular &quot;__safari_exception&quot; property on your plugin&apos;s exposed JS object, then instead of ever calling your plugin, call through a JS library and &quot;throw&quot; from that library any time that special property is set on your plugin object.  Perhaps Anders or Geoff will have additional (better!) suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70321</commentid>
    <comment_count>4</comment_count>
      <attachid>19080</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-11 14:36:28 -0800</bug_when>
    <thetext>Created attachment 19080
First pass at set exception fix

 JavaScriptCore/bindings/NP_jsobject.cpp            |   19 +++++-------
 .../plugins/netscape-throw-exception-expected.txt  |    3 ++
 LayoutTests/plugins/netscape-throw-exception.html  |   30 ++++++++++++++++++
 .../TestNetscapePlugIn.subproj/PluginObject.cpp    |    9 ++++-
 .../TestNetscapePlugIn.subproj/TestObject.cpp      |   32 ++++++++++++++++++--
 5 files changed, 77 insertions(+), 16 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76071</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-01 12:16:45 -0700</bug_when>
    <thetext>This bug blocks Google Gears support in Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76079</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-04-01 15:40:18 -0700</bug_when>
    <thetext>This can probably be trivially fixed now that cache the currently executing GlobalObject for bridged js objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76580</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-08 02:05:09 -0700</bug_when>
    <thetext>Working on a real fix as we speak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76652</commentid>
    <comment_count>8</comment_count>
      <attachid>20413</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-08 15:25:14 -0700</bug_when>
    <thetext>Created attachment 20413
Make instances save off ExecStates, test case coming soon

 WebCore/bindings/objc/WebScriptObject.mm |   13 +--
 WebCore/bridge/NP_jsobject.cpp           |   38 +++++---
 WebCore/bridge/NP_jsobject.h             |    2 +
 WebCore/bridge/c/c_instance.cpp          |    2 +-
 WebCore/bridge/c/c_instance.h            |    4 +-
 WebCore/bridge/jni/jni_instance.cpp      |    4 +-
 WebCore/bridge/jni/jni_instance.h        |    4 +-
 WebCore/bridge/objc/objc_instance.h      |   21 +++--
 WebCore/bridge/objc/objc_instance.mm     |    8 +-
 WebCore/bridge/objc/objc_runtime.mm      |    4 +-
 WebCore/bridge/runtime.cpp               |   25 +-----
 WebCore/bridge/runtime.h                 |   42 ++++++--
 WebCore/bridge/runtime_method.cpp        |   20 ++--
 WebCore/bridge/runtime_object.cpp        |  152 +++++++++++-------------------
 WebCore/bridge/runtime_object.h          |   22 ++--
 WebCore/bridge/runtime_root.h            |    2 +-
 16 files changed, 164 insertions(+), 199 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76660</commentid>
    <comment_count>9</comment_count>
      <attachid>20413</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-08 16:53:34 -0700</bug_when>
    <thetext>Comment on attachment 20413
Make instances save off ExecStates, test case coming soon

Actually, this approach won&apos;t work either, because the plugins custom objects will never be NPScriptObjects (aka JavaScriptObjects).  Instead they&apos;ll be some custom NPObject &quot;subclass&quot; with a custom NPClass.  So either I will need a way to look up the current ExecState based on NPObject*, or we&apos;ll need to just keep around a static ExecState* and set it when we enter the plugin code.  We can&apos;t pass it off to NPAPI callbacks because they&apos;re on the other side of the NPAPI plugin information code.

I&apos;m interested in your thoughts.  I&apos;m leaning toward a static ExecState*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86511</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-07-20 15:27:08 -0700</bug_when>
    <thetext>Related to Bug 19888?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105772</commentid>
    <comment_count>11</comment_count>
      <attachid>26726</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-01-14 13:15:55 -0800</bug_when>
    <thetext>Created attachment 26726
NPN_SetException() implementation.

This patch mirrors the exception handling done by the obj-c bindings.

The implementation ignores the NPP argument entireley which is consistent with the Mozilla implementation, see (http://mxr.mozilla.org/firefox/source/modules/plugin/base/src/ns4xPlugin.cpp line 2131).

https://bugs.webkit.org/show_bug.cgi?id=19888 is also related to this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105773</commentid>
    <comment_count>12</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-01-14 13:16:52 -0800</bug_when>
    <thetext>The unit tests in the patch are very slightly modified versions of those posted previously by Eric.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105778</commentid>
    <comment_count>13</comment_count>
      <attachid>26726</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-14 13:33:32 -0800</bug_when>
    <thetext>Comment on attachment 26726
NPN_SetException() implementation.

I like the approach.  However, there are a few things wrong here.

1.  s_exceptionEnvironment seems never to be used, and can be removed.

2.  There are a few code style violations (spacing around *, and { on the next line after a function declaration).
http://webkit.org/coding/coding-style.html

3.  I&apos;ve never seen getExceptionString() style functions return a mutable reference.  I&apos;ve seen setExecptionString(string) used, and execptionString() style which could return a global poitner.  renaming to sharedExceptionString() or globalExceptionString() might be sufficient to feel &quot;webkitty&quot;.

Parts of the NPAPI code are a sewer (from long neglect).  But we still should try and update the parts we touch to modern style.  An example of a part which could use update:
+static bool testHasMethod(NPObject *obj, NPIdentifier name);
+static bool testInvoke(NPObject *obj, NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result);

WK Style suggests not using named arguments in declarations, unless the name helps undestand what the argument is used for.  For example, &quot;name&quot; is probably helps undestanding, but &quot;obj&quot; does not, and can be removed.

r- for s_exceptionEnvironment and the various style violations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105784</commentid>
    <comment_count>14</comment_count>
      <attachid>26729</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-01-14 14:02:59 -0800</bug_when>
    <thetext>Created attachment 26729
Updated patch

* renamed per suggestions.
* Fixed style issues.
* removed s_exceptionEnvironment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105788</commentid>
    <comment_count>15</comment_count>
      <attachid>26731</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-01-14 14:15:56 -0800</bug_when>
    <thetext>Created attachment 26731
Updated patch

Add asserts to check we aren&apos;t leaking exceptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105789</commentid>
    <comment_count>16</comment_count>
      <attachid>26731</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-14 14:16:56 -0800</bug_when>
    <thetext>Comment on attachment 26731
Updated patch

Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105793</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-14 14:22:50 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/plugins/netscape-throw-exception-expected.txt
	A	LayoutTests/plugins/netscape-throw-exception.html
	M	WebCore/ChangeLog
	M	WebCore/bridge/NP_jsobject.cpp
	M	WebCore/bridge/c/c_instance.cpp
	M	WebCore/bridge/c/c_instance.h
	M	WebKitTools/ChangeLog
	M	WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp
	M	WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp
Committed r39912
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105795</commentid>
    <comment_count>18</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-01-14 14:25:00 -0800</bug_when>
    <thetext>*** Bug 23201 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105799</commentid>
    <comment_count>19</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-01-14 14:36:04 -0800</bug_when>
    <thetext>Awesomeness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108434</commentid>
    <comment_count>20</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2009-02-05 07:06:35 -0800</bug_when>
    <thetext>*** Bug 19888 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19080</attachid>
            <date>2008-02-11 14:36:28 -0800</date>
            <delta_ts>2009-01-14 13:15:55 -0800</delta_ts>
            <desc>First pass at set exception fix</desc>
            <filename>First-pass-at-set-exception-fix.patch</filename>
            <type>text/plain</type>
            <size>6996</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YWE1MzEwNWRiMTJmMWFjOGNkODc4OWU1ZWYwYWI1MDM0ZmQ4ZmIyMQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvTlBfanNvYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvTlBfanNvYmplY3QuY3BwCmluZGV4IDA1OWI1ZGYuLmMwNzdhMGYgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL05QX2pzb2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9OUF9qc29iamVjdC5jcHAKQEAgLTM1NiwxOCArMzU2LDE1IEBAIGJvb2wg
X05QTl9IYXNNZXRob2QoTlBQLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIF9OUE5fU2V0RXhjZXB0aW9uKE5QT2JqZWN0
KiBvLCBjb25zdCBOUFVURjgqIG1lc3NhZ2UpCit2b2lkIF9OUE5fU2V0RXhjZXB0aW9uKE5QT2Jq
ZWN0KiwgY29uc3QgTlBVVEY4KiBtZXNzYWdlKQogewotICAgIGlmIChvLT5fY2xhc3MgPT0gTlBT
Y3JpcHRPYmplY3RDbGFzcykgewotICAgICAgICBKYXZhU2NyaXB0T2JqZWN0KiBvYmogPSAoSmF2
YVNjcmlwdE9iamVjdCopbzsgCi0gICAgICAgIFJvb3RPYmplY3QqIHJvb3RPYmplY3QgPSBvYmot
PnJvb3RPYmplY3Q7Ci0gICAgICAgIGlmICghcm9vdE9iamVjdCB8fCAhcm9vdE9iamVjdC0+aXNW
YWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgICAgIEpTTG9j
ayBsb2NrOwotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIEdlbmVyYWxFcnJvciwgbWVzc2FnZSk7
Ci0gICAgfQorICAgIC8vIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgd2Ugb25seSBldmVyIGhhdmUg
b25lIHJ1bm5pbmcgaW50ZXJwcmV0ZXIuICBBCisgICAgLy8gZ29vZCBhc3N1bXB0aW9uIGZvciBu
b3csIGFzIHdlIGRlcGVuZCBvbiB0aGF0IGVsc2V3aGVyZS4gIEhvd2V2ZXIsCisgICAgLy8gaW4g
dGhlIGZ1dHVyZSB3ZSBtYXkgaGF2ZSB0aGUgYWJpbGl0eSB0byBydW4gbXVsdGlwbGUgaW50ZXJw
cmV0ZXJzLAorICAgIC8vIGluIHdoaWNoIGNhc2UgdGhpcyB3aWxsIGhhdmUgdG8gY2hhbmdlLgor
ICAgIEpTTG9jayBsb2NrOworICAgIGlmIChFeGVjU3RhdGU6OmFjdGl2ZUV4ZWNTdGF0ZXMoKS5z
aXplKCkpCisgICAgICAgIHRocm93RXJyb3IoRXhlY1N0YXRlOjphY3RpdmVFeGVjU3RhdGVzKCku
bGFzdCgpLCBHZW5lcmFsRXJyb3IsIG1lc3NhZ2UpOwogfQogCiBib29sIF9OUE5fRW51bWVyYXRl
KE5QUCwgTlBPYmplY3QgKm8sIE5QSWRlbnRpZmllciAqKmlkZW50aWZpZXIsIHVpbnQzMl90ICpj
b3VudCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtdGhyb3ctZXhj
ZXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtdGhyb3ct
ZXhjZXB0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mZWI3NjFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2Fw
ZS10aHJvdy1leGNlcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorIFRoaXMgdGVz
dHMgdGhhdCBhIHBsdWdpbiBjYW4gdGhyb3cgZXhjZXB0aW9ucy4gSWYgdGhpcyB0ZXN0IGlzIHN1
Y2Nlc3NmdWwgdGhlIHRleHQgIlNVQ0NFU1MiIHR3aWNlIGJlbG93LgorcGx1Z2luIG9iamVjdCB0
ZXN0VGhyb3dFeGNlcHRpb24gU1VDQ0VTUwordGVzdCBvYmplY3QgdGhyb3dFeGNlcHRpb24gU1VD
Q0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2FwZS10aHJvdy1leGNl
cHRpb24uaHRtbCBiL0xheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtdGhyb3ctZXhjZXB0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdjY2NiNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtdGhyb3ctZXhjZXB0aW9u
Lmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVz
dCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAKKyAgICB2YXIgcGx1Z2lu
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RQbHVnaW4iKTsKKyAgICB2YXIgcmVzdWx0
MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQxJyk7CisgICAgdHJ5IHsKKyAgICAg
ICAgcGx1Z2luLnRlc3RUaHJvd0V4Y2VwdGlvbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgcmVzdWx0MS5pbm5lckhUTUwgPSBlLm1lc3NhZ2U7CisgICAgfQorICAgIHZhciByZXN1bHQy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdDInKTsKKyAgICB0cnkgeworICAgICAg
ICBwbHVnaW4udGVzdE9iamVjdC50aHJvd0V4Y2VwdGlvbigpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgcmVzdWx0Mi5pbm5lckhUTUwgPSBlLm1lc3NhZ2U7CisgICAgfQorfQorPC9zY3Jp
cHQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8ZW1iZWQgaWQ9InRlc3RQbHVnaW4i
IHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiIHdpZHRoPSIyMDAiIGhl
aWdodD0iMjAwIj48L2VtYmVkPgorVGhpcyB0ZXN0cyB0aGF0IGEgcGx1Z2luIGNhbiB0aHJvdyBl
eGNlcHRpb25zLiBJZiB0aGlzIHRlc3QgaXMgc3VjY2Vzc2Z1bCB0aGUgdGV4dCAiU1VDQ0VTUyIg
dHdpY2UgYmVsb3cuCis8ZGl2IGlkPSJyZXN1bHQxIj5GQUlMVVJFPC9kaXY+Cis8ZGl2IGlkPSJy
ZXN1bHQyIj5GQUlMVVJFPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJvai9QbHVnaW5P
YmplY3QuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0lu
LnN1YnByb2ovUGx1Z2luT2JqZWN0LmNwcAppbmRleCA0Y2Q0YzA0Li5mZTRmZDViIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJv
ai9QbHVnaW5PYmplY3QuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RO
ZXRzY2FwZVBsdWdJbi5zdWJwcm9qL1BsdWdpbk9iamVjdC5jcHAKQEAgLTk3LDcgKzk3LDggQEAg
c3RhdGljIGNvbnN0IE5QVVRGOCAqcGx1Z2luUHJvcGVydHlJZGVudGlmaWVyTmFtZXNbTlVNX1BS
T1BFUlRZX0lERU5USUZJRVJTXSA9IHsKICNkZWZpbmUgSURfVEVTVF9HRVRfUFJPUEVSVFkgICAg
ICAgIDkKICNkZWZpbmUgSURfVEVTVF9FVkFMVUFURSAgICAgICAgICAgIDEwCiAjZGVmaW5lIElE
X1RFU1RfR0VUX1BST1BFUlRZX1JFVFVSTl9WQUxVRSAxMQotI2RlZmluZSBOVU1fTUVUSE9EX0lE
RU5USUZJRVJTICAgICAgMTIKKyNkZWZpbmUgSURfVEVTVF9USFJPV19FWENFUFRJT05fTUVUSE9E
IDEyCisjZGVmaW5lIE5VTV9NRVRIT0RfSURFTlRJRklFUlMgICAgICAxMwogCiBzdGF0aWMgTlBJ
ZGVudGlmaWVyIHBsdWdpbk1ldGhvZElkZW50aWZpZXJzW05VTV9NRVRIT0RfSURFTlRJRklFUlNd
Owogc3RhdGljIGNvbnN0IE5QVVRGOCAqcGx1Z2luTWV0aG9kSWRlbnRpZmllck5hbWVzW05VTV9N
RVRIT0RfSURFTlRJRklFUlNdID0gewpAQCAtMTEzLDYgKzExNCw3IEBAIHN0YXRpYyBjb25zdCBO
UFVURjggKnBsdWdpbk1ldGhvZElkZW50aWZpZXJOYW1lc1tOVU1fTUVUSE9EX0lERU5USUZJRVJT
XSA9IHsKICAgICAidGVzdEdldFByb3BlcnR5IiwKICAgICAidGVzdEV2YWx1YXRlIiwKICAgICAi
dGVzdEdldFByb3BlcnR5UmV0dXJuVmFsdWUiLAorICAgICJ0ZXN0VGhyb3dFeGNlcHRpb24iLAog
fTsKIAogc3RhdGljIE5QVVRGOCogY3JlYXRlQ1N0cmluZ0Zyb21OUFZhcmlhbnQoY29uc3QgTlBW
YXJpYW50ICp2YXJpYW50KQpAQCAtMzczLDcgKzM3NSwxMCBAQCBzdGF0aWMgYm9vbCBwbHVnaW5J
bnZva2UoTlBPYmplY3QgKmhlYWRlciwgTlBJZGVudGlmaWVyIG5hbWUsIGNvbnN0IE5QVmFyaWFu
dCAqYQogCiAgICAgICAgIEJPT0xFQU5fVE9fTlBWQVJJQU5UKHJldHZhbCwgKnJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcGx1Z2lu
TWV0aG9kSWRlbnRpZmllcnNbSURfVEVTVF9USFJPV19FWENFUFRJT05fTUVUSE9EXSkgeworICAg
ICAgICBicm93c2VyLT5zZXRleGNlcHRpb24ob2JqLT50ZXN0T2JqZWN0LCAicGx1Z2luIG9iamVj
dCB0ZXN0VGhyb3dFeGNlcHRpb24gU1VDQ0VTUyIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luLnN1YnByb2ovVGVzdE9iamVjdC5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJvai9UZXN0
T2JqZWN0LmNwcAppbmRleCA2YjYyMDZlLi5mYzhiZmUzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJvai9UZXN0T2JqZWN0LmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3Vi
cHJvai9UZXN0T2JqZWN0LmNwcApAQCAtMzYsNiArMzYsOCBAQAogCiBzdGF0aWMgYm9vbCB0ZXN0
RW51bWVyYXRlKE5QT2JqZWN0ICpucG9iaiwgTlBJZGVudGlmaWVyICoqdmFsdWUsIHVpbnQzMl90
ICpjb3VudCk7CiBzdGF0aWMgYm9vbCB0ZXN0SGFzUHJvcGVydHkoTlBPYmplY3QgKm9iaiwgTlBJ
ZGVudGlmaWVyIG5hbWUpOworc3RhdGljIGJvb2wgdGVzdEhhc01ldGhvZChOUE9iamVjdCAqb2Jq
LCBOUElkZW50aWZpZXIgbmFtZSk7CitzdGF0aWMgYm9vbCB0ZXN0SW52b2tlKE5QT2JqZWN0ICpv
YmosIE5QSWRlbnRpZmllciBuYW1lLCBjb25zdCBOUFZhcmlhbnQgKmFyZ3MsIHVpbnQzMl90IGFy
Z0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCk7CiBzdGF0aWMgTlBPYmplY3QgKnRlc3RBbGxvY2F0
ZShOUFAgbnBwLCBOUENsYXNzICp0aGVDbGFzcyk7CiBzdGF0aWMgdm9pZCB0ZXN0RGVhbGxvY2F0
ZShOUE9iamVjdCAqb2JqKTsKIApAQCAtNDQsOCArNDYsOCBAQCBzdGF0aWMgTlBDbGFzcyB0ZXN0
Q2xhc3MgPSB7CiAgICAgdGVzdEFsbG9jYXRlLCAKICAgICB0ZXN0RGVhbGxvY2F0ZSwgCiAgICAg
MCwKLSAgICAwLAotICAgIDAsCisgICAgdGVzdEhhc01ldGhvZCwKKyAgICB0ZXN0SW52b2tlLAog
ICAgIDAsCiAgICAgdGVzdEhhc1Byb3BlcnR5LAogICAgIDAsCkBAIC02OSw5ICs3MSwxOCBAQCBz
dGF0aWMgY29uc3QgTlBVVEY4ICp0ZXN0SWRlbnRpZmllck5hbWVzW05VTV9URVNUX0lERU5USUZJ
RVJTXSA9IHsKICAgICAiYmFyIgogfTsKIAorI2RlZmluZSBJRF9USFJPV19FWENFUFRJT05fTUVU
SE9EICAgMAorI2RlZmluZSBOVU1fTUVUSE9EX0lERU5USUZJRVJTICAgICAgMQorCitzdGF0aWMg
TlBJZGVudGlmaWVyIHRlc3RNZXRob2RJZGVudGlmaWVyc1tOVU1fTUVUSE9EX0lERU5USUZJRVJT
XTsKK3N0YXRpYyBjb25zdCBOUFVURjggKnRlc3RNZXRob2RJZGVudGlmaWVyTmFtZXNbTlVNX01F
VEhPRF9JREVOVElGSUVSU10gPSB7CisgICAgInRocm93RXhjZXB0aW9uIiwKK307CisKIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVJZGVudGlmaWVycyh2b2lkKQogewogICAgIGJyb3dzZXItPmdldHN0
cmluZ2lkZW50aWZpZXJzKHRlc3RJZGVudGlmaWVyTmFtZXMsIE5VTV9URVNUX0lERU5USUZJRVJT
LCB0ZXN0SWRlbnRpZmllcnMpOworICAgIGJyb3dzZXItPmdldHN0cmluZ2lkZW50aWZpZXJzKHRl
c3RNZXRob2RJZGVudGlmaWVyTmFtZXMsIE5VTV9NRVRIT0RfSURFTlRJRklFUlMsIHRlc3RNZXRo
b2RJZGVudGlmaWVycyk7CiB9CiAKIHN0YXRpYyBOUE9iamVjdCAqdGVzdEFsbG9jYXRlKE5QUCBu
cHAsIE5QQ2xhc3MgKnRoZUNsYXNzKQpAQCAtMTAxLDYgKzExMiwxNCBAQCBzdGF0aWMgYm9vbCB0
ZXN0SGFzUHJvcGVydHkoTlBPYmplY3QgKm9iaiwgTlBJZGVudGlmaWVyIG5hbWUpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCB0ZXN0SGFzTWV0aG9kKE5QT2JqZWN0ICpvYmos
IE5QSWRlbnRpZmllciBuYW1lKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOVU1f
TUVUSE9EX0lERU5USUZJRVJTOyBpKyspIHsKKyAgICAgICAgaWYgKHRlc3RNZXRob2RJZGVudGlm
aWVyc1tpXSA9PSBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KIAogc3RhdGljIGJvb2wgdGVzdEVudW1lcmF0ZShOUE9iamVjdCAqbnBv
YmosIE5QSWRlbnRpZmllciAqKnZhbHVlLCB1aW50MzJfdCAqY291bnQpCiB7CkBAIC0xMTIsNCAr
MTMxLDExIEBAIHN0YXRpYyBib29sIHRlc3RFbnVtZXJhdGUoTlBPYmplY3QgKm5wb2JqLCBOUElk
ZW50aWZpZXIgKip2YWx1ZSwgdWludDMyX3QgKmNvdW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LQorc3RhdGljIGJvb2wgdGVzdEludm9rZShOUE9iamVjdCAqaGVhZGVyLCBOUElkZW50aWZpZXIg
bmFtZSwgY29uc3QgTlBWYXJpYW50ICphcmdzLCB1aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50
ICpyZXN1bHQpCit7CisgICAgaWYgKG5hbWUgPT0gdGVzdE1ldGhvZElkZW50aWZpZXJzW0lEX1RI
Uk9XX0VYQ0VQVElPTl9NRVRIT0RdKSB7CisgICAgICAgIGJyb3dzZXItPnNldGV4Y2VwdGlvbiho
ZWFkZXIsICJ0ZXN0IG9iamVjdCB0aHJvd0V4Y2VwdGlvbiBTVUNDRVNTIik7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgICB9CisgICAgIHJldHVybiBmYWxzZTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20413</attachid>
            <date>2008-04-08 15:25:14 -0700</date>
            <delta_ts>2009-01-14 13:15:55 -0800</delta_ts>
            <desc>Make instances save off ExecStates, test case coming soon</desc>
            <filename>Make-instances-save-off-ExecStates-test-case-coming-soon.patch</filename>
            <type>text/plain</type>
            <size>27992</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YWUzNzg0MzQ0Y2U3YzFmNTZiOWMzOWM0ZmY0YjhlNDk2Mjc4YzFlZgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggMmEyMmU1ZS4uNmNmMWU5YiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0yNTAsMTUgKzI1MCwxMCBAQCBz
dGF0aWMgdm9pZCBfZGlkRXhlY3V0ZShXZWJTY3JpcHRPYmplY3QgKm9iaikKICsgKEJPT0wpdGhy
b3dFeGNlcHRpb246KE5TU3RyaW5nICopZXhjZXB0aW9uTWVzc2FnZQogewogICAgIEpTTG9jayBs
b2NrOwotCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEluc3RhbmNlOjpjdXJy
ZW50R2xvYmFsT2JqZWN0KCk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgIHJldHVy
biBOTzsKLQotICAgIGlmIChnbG9iYWxPYmplY3QtPmFjdGl2ZUV4ZWNTdGF0ZXMoKS5zaXplKCkp
IHsKLSAgICAgICAgdGhyb3dFcnJvcihnbG9iYWxPYmplY3QtPmFjdGl2ZUV4ZWNTdGF0ZXMoKS5s
YXN0KCksIEdlbmVyYWxFcnJvciwgZXhjZXB0aW9uTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybiBZ
RVM7Ci0gICAgfQorICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlYyA9IE9iamNJbnN0YW5jZTo6Y3Vy
cmVudEV4ZWNTdGF0ZSgpOworICAgIGlmIChleGVjKQorICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IEdlbmVyYWxFcnJvciwgZXhjZXB0aW9uTWVzc2FnZSk7CiAKICAgICByZXR1cm4gTk87CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAKaW5kZXggYTM1NGFmNS4uZjBhNzc1YyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAj
aW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNp
bmNsdWRlICJydW50aW1lX29iamVjdC5oIgogCiB1c2luZyBXZWJDb3JlOjpTdHJpbmc7CiB1c2lu
ZyBuYW1lc3BhY2UgS0pTOwpAQCAtNDgsMTIgKzQ5LDEyIEBAIHN0YXRpYyB2b2lkIGdldExpc3RG
cm9tVmFyaWFudEFyZ3MoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVu
c2lnCiAgICAgICAgIGFMaXN0LmFwcGVuZChjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZShleGVjLCAm
YXJnc1tpXSwgcm9vdE9iamVjdCkpOwogfQogCi1zdGF0aWMgTlBPYmplY3QqIGpzQWxsb2NhdGUo
TlBQLCBOUENsYXNzKikKK3N0YXRpYyBOUE9iamVjdCogYWxsb2NhdGVOUFNjcmlwdE9iamVjdChO
UFAsIE5QQ2xhc3MqKQogewogICAgIHJldHVybiAoTlBPYmplY3QqKW1hbGxvYyhzaXplb2YoSmF2
YVNjcmlwdE9iamVjdCkpOwogfQogCi1zdGF0aWMgdm9pZCBqc0RlYWxsb2NhdGUoTlBPYmplY3Qq
IG5wT2JqKQorc3RhdGljIHZvaWQgZGVhbGxvY2F0ZU5QU2NyaXB0T2JqZWN0KE5QT2JqZWN0KiBu
cE9iaikKIHsKICAgICBKYXZhU2NyaXB0T2JqZWN0KiBvYmogPSAoSmF2YVNjcmlwdE9iamVjdCop
bnBPYmo7CiAKQEAgLTY2LDExICs2NywxMSBAQCBzdGF0aWMgdm9pZCBqc0RlYWxsb2NhdGUoTlBP
YmplY3QqIG5wT2JqKQogICAgIGZyZWUob2JqKTsKIH0KIAotc3RhdGljIE5QQ2xhc3MgamF2YXNj
cmlwdENsYXNzID0geyAxLCBqc0FsbG9jYXRlLCBqc0RlYWxsb2NhdGUsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAgfTsKLXN0YXRpYyBOUENsYXNzIG5vU2NyaXB0Q2xhc3MgPSB7IDEsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKK3N0YXRpYyBOUENsYXNzIHNfTlBTY3JpcHRP
YmplY3RDbGFzcyA9IHsgMSwgYWxsb2NhdGVOUFNjcmlwdE9iamVjdCwgZGVhbGxvY2F0ZU5QU2Ny
aXB0T2JqZWN0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07CitzdGF0aWMgTlBDbGFzcyBz
X05QTm9TY3JpcHRPYmplY3RDbGFzcyA9IHsgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCB9OwogCi1OUENsYXNzKiBOUFNjcmlwdE9iamVjdENsYXNzID0gJmphdmFzY3JpcHRDbGFz
czsKLXN0YXRpYyBOUENsYXNzKiBOUE5vU2NyaXB0T2JqZWN0Q2xhc3MgPSAmbm9TY3JpcHRDbGFz
czsKK05QQ2xhc3MqIE5QU2NyaXB0T2JqZWN0Q2xhc3MgPSAmc19OUFNjcmlwdE9iamVjdENsYXNz
Oworc3RhdGljIE5QQ2xhc3MqIE5QTm9TY3JpcHRPYmplY3RDbGFzcyA9ICZzX05QTm9TY3JpcHRP
YmplY3RDbGFzczsKIAogTlBPYmplY3QqIF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0KE5QUCBucHAs
IEpTT2JqZWN0KiBpbXAsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKIHsKQEAg
LTEwNiw3ICsxMDcsNyBAQCBib29sIF9OUE5fSW52b2tlRGVmYXVsdChOUFAsIE5QT2JqZWN0KiBv
LCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVpbnQzMl90IGFyZ0NvdQogICAgICAgICBKU0xvY2sg
bG9jazsKICAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KLSAg
ICAgICAgSlNPYmplY3QgKmZ1bmNJbXAgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KG9iai0+aW1w
KTsKKyAgICAgICAgSlNPYmplY3QgKmZ1bmNJbXAgPSBvYmotPmltcDsKICAgICAgICAgaWYgKCFm
dW5jSW1wLT5pbXBsZW1lbnRzQ2FsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAKQEAgLTE2Myw3ICsxNjQsNyBAQCBib29sIF9OUE5fSW52b2tlKE5QUCBucHAsIE5QT2Jq
ZWN0KiBvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29uc3QgTlBWYXJpYW50KgogICAgICAg
ICB9CiAgICAgICAgIC8vIENhbGwgdGhlIGZ1bmN0aW9uIG9iamVjdC4KICAgICAgICAgSlNPYmpl
Y3QgKmZ1bmNJbXAgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KGZ1bmMpOwotICAgICAgICBKU09i
amVjdCAqdGhpc09iaiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3QqPihvYmotPmltcCk7CisgICAgICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gb2JqLT5pbXA7CiAgICAgICAgIExpc3QgYXJnTGlzdDsKICAg
ICAgICAgZ2V0TGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwgcm9vdE9i
amVjdCwgYXJnTGlzdCk7CiAgICAgICAgIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5zdGFy
dFRpbWVvdXRDaGVjaygpOwpAQCAtMzUzLDE1ICszNTQsMjAgQEAgYm9vbCBfTlBOX0hhc01ldGhv
ZChOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3QqIG8sIGNvbnN0IE5Q
VVRGOCogbWVzc2FnZSkKK3ZvaWQgX05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3QqIG5wT2JqZWN0
LCBjb25zdCBOUFVURjgqIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKG8tPl9jbGFzcyA9PSBOUFNjcmlw
dE9iamVjdENsYXNzKSB7Ci0gICAgICAgIEphdmFTY3JpcHRPYmplY3QqIG9iaiA9IChKYXZhU2Ny
aXB0T2JqZWN0KilvOyAKLSAgICAgICAgUm9vdE9iamVjdCogcm9vdE9iamVjdCA9IG9iai0+cm9v
dE9iamVjdDsKLSAgICAgICAgaWYgKCFyb290T2JqZWN0IHx8ICFyb290T2JqZWN0LT5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gcm9v
dE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBpZiAobnBPYmplY3Qt
Pl9jbGFzcyAhPSBOUFNjcmlwdE9iamVjdENsYXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBK
YXZhU2NyaXB0T2JqZWN0KiBvYmogPSByZWludGVycHJldF9jYXN0PEphdmFTY3JpcHRPYmplY3Qq
PihucE9iamVjdCk7IAorICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmotPmltcDsKKyAgICBpZiAo
IW9iamVjdCB8fCBvYmplY3QtPmNsYXNzSW5mbygpICE9ICZSdW50aW1lT2JqZWN0SW1wOjpzX2lu
Zm8pCisgICAgICAgIHJldHVybjsKKworICAgIFJ1bnRpbWVPYmplY3RJbXAqIHJ1bnRpbWVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0SW1wKj4ob2JqZWN0KTsKKyAgICBJbnN0YW5j
ZSogaW5zdGFuY2UgPSBydW50aW1lT2JqZWN0LT5nZXRJbnRlcm5hbEluc3RhbmNlKCk7CisgICAg
RXhlY1N0YXRlKiBleGVjID0gaW5zdGFuY2UtPmN1cnJlbnRFeGVjU3RhdGUoKTsKKyAgICBpZiAo
ZXhlYykgewogICAgICAgICBKU0xvY2sgbG9jazsKICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBH
ZW5lcmFsRXJyb3IsIG1lc3NhZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdl
L05QX2pzb2JqZWN0LmggYi9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5oCmluZGV4IDliNmQ2
MWEuLmQ1ODE5NjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmgKKysr
IGIvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuaApAQCAtMzgsOCArMzgsMTAgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgfQogfQogCisvLyBBbGwgb2JqZWN0cyB3aXRoIHRoaXMgY2xhc3MgYXJl
IEphdmFTY3JpcHRPYmplY3RzCiBleHRlcm4gTlBDbGFzcyogTlBTY3JpcHRPYmplY3RDbGFzczsK
IAorLy8gb2JqZWN0LmNsYXNzIGlzIGFsd2F5cyA9PSBKYXZhU2NyaXB0T2JqZWN0CiBzdHJ1Y3Qg
SmF2YVNjcmlwdE9iamVjdAogewogICAgIE5QT2JqZWN0IG9iamVjdDsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFu
Y2UuY3BwCmluZGV4IDM5MDdmNjcuLjM2YmQxNGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdl
L2MvY19pbnN0YW5jZS5jcHAKKysrIGIvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcApA
QCAtMTM5LDcgKzEzOSw3IEBAIEpTVmFsdWUqIENJbnN0YW5jZTo6ZGVmYXVsdFZhbHVlKEpTVHlw
ZSBoaW50KSBjb25zdAogICAgICAgICByZXR1cm4gc3RyaW5nVmFsdWUoKTsKICAgICBpZiAoaGlu
dCA9PSBOdW1iZXJUeXBlKQogICAgICAgICByZXR1cm4gbnVtYmVyVmFsdWUoKTsKLSAgIGlmICho
aW50ID09IEJvb2xlYW5UeXBlKQorICAgIGlmIChoaW50ID09IEJvb2xlYW5UeXBlKQogICAgICAg
ICByZXR1cm4gYm9vbGVhblZhbHVlKCk7CiAgICAgcmV0dXJuIHZhbHVlT2YoKTsKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5oIGIvV2ViQ29yZS9icmlkZ2UvYy9j
X2luc3RhbmNlLmgKaW5kZXggMDM5N2E5My4uNDNlMGZlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmgKKysrIGIvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgK
QEAgLTU1LDggKzU1LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGltcGxlbWVudHND
YWxsKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBKU1ZhbHVlICppbnZva2VNZXRob2QgKEV4
ZWNTdGF0ZSAqZXhlYywgY29uc3QgTWV0aG9kTGlzdCAmbWV0aG9kLCBjb25zdCBMaXN0ICZhcmdz
KTsKLSAgICB2aXJ0dWFsIEpTVmFsdWUgKmludm9rZURlZmF1bHRNZXRob2QgKEV4ZWNTdGF0ZSAq
ZXhlYywgY29uc3QgTGlzdCAmYXJncyk7CisgICAgdmlydHVhbCBKU1ZhbHVlKiBpbnZva2VNZXRo
b2QgKEV4ZWNTdGF0ZSosIGNvbnN0IE1ldGhvZExpc3QmLCBjb25zdCBMaXN0JiBhcmdzKTsKKyAg
ICB2aXJ0dWFsIEpTVmFsdWUqIGludm9rZURlZmF1bHRNZXRob2QgKEV4ZWNTdGF0ZSosIGNvbnN0
IExpc3QmIGFyZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZUFycmF5Jik7CiAKICAgICBKU1ZhbHVlICpzdHJpbmdWYWx1ZSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9pbnN0YW5jZS5jcHAgYi9X
ZWJDb3JlL2JyaWRnZS9qbmkvam5pX2luc3RhbmNlLmNwcAppbmRleCBhMTk4YzVkLi41YTk5OWVk
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2luc3RhbmNlLmNwcAorKysgYi9X
ZWJDb3JlL2JyaWRnZS9qbmkvam5pX2luc3RhbmNlLmNwcApAQCAtNjAsMTIgKzYwLDEyIEBAIEph
dmFJbnN0YW5jZTo6fkphdmFJbnN0YW5jZSAoKQogCiAjZGVmaW5lIE5VTV9MT0NBTF9SRUZTIDY0
CiAKLXZvaWQgSmF2YUluc3RhbmNlOjp2aXJ0dWFsQmVnaW4oKQordm9pZCBKYXZhSW5zdGFuY2U6
OmVudGVyaW5nTmF0aXZlQ29kZSgpCiB7CiAgICAgZ2V0Sk5JRW52KCktPlB1c2hMb2NhbEZyYW1l
IChOVU1fTE9DQUxfUkVGUyk7CiB9CiAKLXZvaWQgSmF2YUluc3RhbmNlOjp2aXJ0dWFsRW5kKCkK
K3ZvaWQgSmF2YUluc3RhbmNlOjpsZWF2aW5nTmF0aXZlQ29kZSgpCiB7CiAgICAgZ2V0Sk5JRW52
KCktPlBvcExvY2FsRnJhbWUgKE5VTEwpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2Uv
am5pL2puaV9pbnN0YW5jZS5oIGIvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9pbnN0YW5jZS5oCmlu
ZGV4IDM2NmFkY2QuLjQwYjAzZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlf
aW5zdGFuY2UuaAorKysgYi9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2luc3RhbmNlLmgKQEAgLTkx
LDggKzkxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgQmluZGluZ0xhbmd1YWdlIGdldEJpbmRp
bmdMYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIEphdmFMYW5ndWFnZTsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB2b2lkIHZpcnR1YWxCZWdpbigpOwotICAgIHZpcnR1YWwgdm9pZCB2aXJ0
dWFsRW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGVudGVyaW5nTmF0aXZlQ29kZSgpOworICAgIHZp
cnR1YWwgdm9pZCBsZWF2aW5nTmF0aXZlQ29kZSgpOwogCiBwcml2YXRlOgogICAgIEphdmFJbnN0
YW5jZShqb2JqZWN0IGluc3RhbmNlLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+KTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5oIGIvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLmgKaW5kZXggNjAzOTIzMi4uZGE1M2I0YyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmgKKysrIGIvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLmgKQEAgLTUxLDEzICs1MSwxMyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgaW1wbGVtZW50c0NhbGwoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIEpT
VmFsdWUgKmludm9rZU1ldGhvZChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IE1ldGhvZExpc3QgJm1l
dGhvZCwgY29uc3QgTGlzdCAmYXJncyk7Ci0gICAgdmlydHVhbCBKU1ZhbHVlICppbnZva2VEZWZh
dWx0TWV0aG9kKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncyk7CisgICAgdmlydHVh
bCBKU1ZhbHVlKiBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgY29uc3QgTWV0aG9kTGlzdCYsIGNv
bnN0IExpc3QmIGFyZ3MpOworICAgIHZpcnR1YWwgSlNWYWx1ZSogaW52b2tlRGVmYXVsdE1ldGhv
ZChFeGVjU3RhdGUqLCBjb25zdCBMaXN0ICZhcmdzKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1NldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1
ZU9mVW5kZWZpbmVkRmllbGQoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9w
ZXJ0eSwgSlNWYWx1ZSAqYVZhbHVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVPZlVuZGVm
aW5lZEZpZWxkKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBKU1ZhbHVl
Kik7CiAgICAgCi0gICAgdmlydHVhbCBKU1ZhbHVlICpnZXRWYWx1ZU9mVW5kZWZpbmVkRmllbGQo
RXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eSwgSlNUeXBlIGhpbnQp
IGNvbnN0OworICAgIHZpcnR1YWwgSlNWYWx1ZSogZ2V0VmFsdWVPZlVuZGVmaW5lZEZpZWxkKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBKU1R5cGUgaGludCkgY29uc3Q7
CiAKICAgICBPYmplY3RTdHJ1Y3RQdHIgZ2V0T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gX2luc3Rh
bmNlLmdldCgpOyB9CiAgICAgCkBAIC02NiwxMSArNjYsMTYgQEAgcHVibGljOgogICAgIEpTVmFs
dWUgKmJvb2xlYW5WYWx1ZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBCaW5kaW5nTGFuZ3VhZ2Ug
Z2V0QmluZGluZ0xhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gT2JqZWN0aXZlQ0xhbmd1YWdlOyB9
CisgICAgCisgICAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gc3VwcG9ydCB0aGUgc3RhdGljIG1ldGhv
ZDoKKyAgICAvLyArW1dlYlNjcmlwdE9iamVjdCB0aHJvd0V4Y2VwdGlvbjpdCisgICAgLy8gdmFy
aWFibGUgc2V0IGJ5IGVudGVyaW5nTmF0aXZlQ29kZSgpIGFuZCBsZWF2aW5nTmF0aXZlQ29kZSgp
CisgICAgc3RhdGljIEV4ZWNTdGF0ZSogY3VycmVudEV4ZWNTdGF0ZSgpIHsgcmV0dXJuIHNfY3Vy
cmVudEV4ZWNTdGF0ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHZpcnR1YWxC
ZWdpbigpOwotICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsRW5kKCk7Ci0KKyAgICB2aXJ0dWFsIHZv
aWQgZW50ZXJpbmdOYXRpdmVDb2RlKCk7CisgICAgdmlydHVhbCB2b2lkIGxlYXZpbmdOYXRpdmVD
b2RlKCk7CisgICAgCiBwcml2YXRlOgogICAgIE9iamNJbnN0YW5jZShPYmplY3RTdHJ1Y3RQdHIg
aW5zdGFuY2UsIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4pOwogICAgIApAQCAtNzgsNiArODMsOCBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgT2JqY0NsYXNzICpfY2xhc3M7CiAgICAgT2JqZWN0U3Ry
dWN0UHRyIF9wb29sOwogICAgIGludCBfYmVnaW5Db3VudDsKKworICAgIHN0YXRpYyBFeGVjU3Rh
dGUqIHNfY3VycmVudEV4ZWNTdGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRpbmdzCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0gYi9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggNTg5YjkzNS4uYmY5MmJmMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCisrKyBiL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQpAQCAtNjAsMTQgKzYwLDE3IEBAIE9iamNJ
bnN0YW5jZTo6fk9iamNJbnN0YW5jZSgpCiAgICAgW3Bvb2wgZHJhaW5dOwogfQogCi12b2lkIE9i
amNJbnN0YW5jZTo6dmlydHVhbEJlZ2luKCkKK0V4ZWNTdGF0ZSogT2JqY0luc3RhbmNlOjpzX2N1
cnJlbnRFeGVjU3RhdGUgPSAwOworCit2b2lkIE9iamNJbnN0YW5jZTo6ZW50ZXJpbmdOYXRpdmVD
b2RlKCkKIHsKICAgICBpZiAoIV9wb29sKQogICAgICAgICBfcG9vbCA9IFtbTlNBdXRvcmVsZWFz
ZVBvb2wgYWxsb2NdIGluaXRdOwogICAgIF9iZWdpbkNvdW50Kys7CisgICAgc19jdXJyZW50RXhl
Y1N0YXRlID0gbV9leGVjU3RhdGU7CiB9CiAKLXZvaWQgT2JqY0luc3RhbmNlOjp2aXJ0dWFsRW5k
KCkKK3ZvaWQgT2JqY0luc3RhbmNlOjpsZWF2aW5nTmF0aXZlQ29kZSgpCiB7CiAgICAgX2JlZ2lu
Q291bnQtLTsKICAgICBBU1NFUlQoX2JlZ2luQ291bnQgPj0gMCk7CkBAIC03NSw2ICs3OCw3IEBA
IHZvaWQgT2JqY0luc3RhbmNlOjp2aXJ0dWFsRW5kKCkKICAgICAgICAgW19wb29sIGRyYWluXTsK
ICAgICAgICAgX3Bvb2wgPSAwOwogICAgIH0KKyAgICBzX2N1cnJlbnRFeGVjU3RhdGUgPSBtX2V4
ZWNTdGF0ZTsKIH0KIAogQmluZGluZ3M6OkNsYXNzKiBPYmpjSW5zdGFuY2U6OmdldENsYXNzKCkg
Y29uc3QgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBi
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IGQ1ZDk1ZmEuLmI0ZTM4
NjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBi
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yNDgsNyArMjQ4LDcgQEAg
SlNWYWx1ZSogT2JqY0ZhbGxiYWNrT2JqZWN0SW1wOjpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2IKICAgICBpZiAoIWluc3RhbmNlKQogICAgICAgICByZXR1
cm4gUnVudGltZU9iamVjdEltcDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CiAgICAg
Ci0gICAgaW5zdGFuY2UtPmJlZ2luKCk7CisgICAgSW5zdGFuY2U6Okludm9jYXRpb24gaW52b2Nh
dGlvbihpbnN0YW5jZSwgZXhlYyk7CiAKICAgICBPYmpjSW5zdGFuY2UqIG9iamNJbnN0YW5jZSA9
IHN0YXRpY19jYXN0PE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBpZCB0YXJnZXRPYmpl
Y3QgPSBvYmpjSW5zdGFuY2UtPmdldE9iamVjdCgpOwpAQCAtMjYyLDggKzI2Miw2IEBAIEpTVmFs
dWUqIE9iamNGYWxsYmFja09iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogdGhpc09iCiAgICAgICAgIHJlc3VsdCA9IGluc3RhbmNlLT5pbnZva2VNZXRo
b2QoZXhlYywgbWV0aG9kTGlzdCwgYXJncyk7CiAgICAgICAgIGRlbGV0ZSBmYWxsYmFja01ldGhv
ZDsKICAgICB9Ci0gICAgICAgICAgICAKLSAgICBpbnN0YW5jZS0+ZW5kKCk7CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2UvcnVudGltZS5jcHAgYi9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lLmNwcAppbmRleCA2NjZhNDY2Li40YzVmYjc2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lLmNwcAorKysgYi9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lLmNwcApAQCAtNDcsMTIgKzQ3LDE0IEBAIEFycmF5Ojp+QXJyYXkoKQogCiBJbnN0YW5jZTo6
SW5zdGFuY2UoUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0KQogICAgIDogX3Jvb3RP
YmplY3Qocm9vdE9iamVjdCkKKyAgICAsIG1fZXhlY1N0YXRlKDApCiB7CiAgICAgQVNTRVJUKF9y
b290T2JqZWN0KTsKIH0KIAogSW5zdGFuY2U6On5JbnN0YW5jZSgpCiB7CisgICAgQVNTRVJUKCFt
X2V4ZWNTdGF0ZSk7CiB9CiAKIHN0YXRpYyBLSlNEaWRFeGVjdXRlRnVuY3Rpb25QdHIgc19kaWRF
eGVjdXRlRnVuY3Rpb247CkBAIC02NywyOSArNjksNiBAQCBLSlNEaWRFeGVjdXRlRnVuY3Rpb25Q
dHIgSW5zdGFuY2U6OmRpZEV4ZWN1dGVGdW5jdGlvbigpCiAgICAgcmV0dXJuIHNfZGlkRXhlY3V0
ZUZ1bmN0aW9uOwogfQogCi1zdGF0aWMgSlNHbG9iYWxPYmplY3QqIHNfY3VycmVudEdsb2JhbE9i
amVjdDsKLQotdm9pZCBJbnN0YW5jZTo6c2V0Q3VycmVudEdsb2JhbE9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHNfY3VycmVudEdsb2JhbE9iamVjdCA9IGdsb2Jh
bE9iamVjdDsKLX0KLQotSlNHbG9iYWxPYmplY3QqIEluc3RhbmNlOjpjdXJyZW50R2xvYmFsT2Jq
ZWN0KCkKLXsKLSAgICByZXR1cm4gc19jdXJyZW50R2xvYmFsT2JqZWN0OwotfQotCi12b2lkIElu
c3RhbmNlOjpiZWdpbigpCi17Ci0gICAgc2V0Q3VycmVudEdsb2JhbE9iamVjdChfcm9vdE9iamVj
dCAmJiBfcm9vdE9iamVjdC0+aXNWYWxpZCgpID8gX3Jvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgp
IDogMCk7Ci0gICAgdmlydHVhbEJlZ2luKCk7Ci19Ci0KLXZvaWQgSW5zdGFuY2U6OmVuZCgpCi17
Ci0gICAgdmlydHVhbEVuZCgpOwotfQotCiBKU1ZhbHVlICpJbnN0YW5jZTo6Z2V0VmFsdWVPZkZp
ZWxkKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgRmllbGQgKmFGaWVsZCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gYUZpZWxkLT52YWx1ZUZyb21JbnN0YW5jZShleGVjLCB0aGlzKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWUuaCBiL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWUuaAppbmRl
eCA4YTg1ZjkxLi4zODkwNDc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lLmgK
KysrIGIvV2ViQ29yZS9icmlkZ2UvcnVudGltZS5oCkBAIC0xMDQsMTggKzEwNCwzMyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgc2V0RGlkRXhlY3V0ZUZ1bmN0aW9uKEtKU0RpZEV4ZWN1dGVG
dW5jdGlvblB0ciBmdW5jKTsKICAgICBzdGF0aWMgS0pTRGlkRXhlY3V0ZUZ1bmN0aW9uUHRyIGRp
ZEV4ZWN1dGVGdW5jdGlvbigpOwogCi0gICAgc3RhdGljIHZvaWQgc2V0Q3VycmVudEdsb2JhbE9i
amVjdChKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3VycmVu
dEdsb2JhbE9iamVjdCgpOwotCiAgICAgc3RhdGljIEpTT2JqZWN0KiBjcmVhdGVSdW50aW1lT2Jq
ZWN0KFBhc3NSZWZQdHI8SW5zdGFuY2U+KTsKICAgICBzdGF0aWMgSW5zdGFuY2UqIGdldEluc3Rh
bmNlKEpTT2JqZWN0KiwgQmluZGluZ0xhbmd1YWdlKTsKIAotICAgIC8vIFRoZXNlIGZ1bmN0aW9u
cyBhcmUgY2FsbGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1haW4gZW50cnkgcG9pbnRzIGludG8K
LSAgICAvLyB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9ucy4gIFRoZXkgY2FuIGJlIHVzZWQgdG8g
ZXN0YWJsaXNoIGFuZCBjbGVhbnVwCi0gICAgLy8gYW55IG5lZWRlZCBzdGF0ZS4KLSAgICB2b2lk
IGJlZ2luKCk7Ci0gICAgdm9pZCBlbmQoKTsKLSAgICAKKyAgICAvLyBTdWJjbGFzc2VzIG11c3Qg
Y3JlYXRlIGFuIEludm9jYXRpb24gYmVmb3JlIGV4ZWN1dGluZyBhbnkgbmF0aXZlIGNvZGUKKyAg
ICBjbGFzcyBJbnZvY2F0aW9uIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEludm9jYXRpb24oSW5z
dGFuY2UqIGluc3RhbmNlLCBFeGVjU3RhdGUqIGV4ZWMpCisgICAgICAgICAgICA6IG1faW5zdGFu
Y2UoaW5zdGFuY2UpCisgICAgICAgICAgICAsIG1fZXhlYyhleGVjKQorICAgICAgICAgICAgLCBt
X3NhdmVkRXhlYyhpbnN0YW5jZS0+bV9leGVjU3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1faW5zdGFuY2UtPm1fZXhlY1N0YXRlID0gZXhlYzsKKyAgICAgICAgICAgIGluc3RhbmNlLT5l
bnRlcmluZ05hdGl2ZUNvZGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIH5JbnZvY2F0aW9uKCkK
KyAgICAgICAgeworICAgICAgICAgICAgbV9pbnN0YW5jZS0+bV9leGVjU3RhdGUgPSBtX3NhdmVk
RXhlYzsKKyAgICAgICAgICAgIG1faW5zdGFuY2UtPmxlYXZpbmdOYXRpdmVDb2RlKCk7CisgICAg
ICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxJbnN0YW5jZT4gbV9pbnN0YW5j
ZTsKKyAgICAgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CisgICAgICAgIEV4ZWNTdGF0ZSogbV9zYXZl
ZEV4ZWM7CisgICAgfTsKKwogICAgIHZpcnR1YWwgQ2xhc3MgKmdldENsYXNzKCkgY29uc3QgPSAw
OwogICAgIAogICAgIHZpcnR1YWwgSlNWYWx1ZSogZ2V0VmFsdWVPZkZpZWxkKEV4ZWNTdGF0ZSos
IGNvbnN0IEZpZWxkKikgY29uc3Q7CkBAIC0xNDEsMTEgKzE1NiwxNiBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIEJpbmRpbmdMYW5ndWFnZSBnZXRCaW5kaW5nTGFuZ3VhZ2UoKSBjb25zdCA9IDA7
CiAKKyAgICBFeGVjU3RhdGUqIGN1cnJlbnRFeGVjU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2V4
ZWNTdGF0ZTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHZpcnR1YWxCZWdpbigp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB2aXJ0dWFsRW5kKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGVudGVyaW5nTmF0aXZlQ29kZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsZWF2aW5nTmF0aXZl
Q29kZSgpIHsgfQogCiAgICAgUmVmUHRyPFJvb3RPYmplY3Q+IF9yb290T2JqZWN0OworCisgICAg
Ly8gVGhpcyBpcyByZWFkIGR1cmluZyBlbnRlcmluZ05hdGl2ZUNvZGUoKSBhbmQgbGVhdmluZ05h
dGl2ZUNvZGUoKQorICAgIEV4ZWNTdGF0ZSogbV9leGVjU3RhdGU7CiB9OwogCiBjbGFzcyBBcnJh
eSA6IE5vbmNvcHlhYmxlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHAgYi9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKaW5kZXggODRlYmIxNy4u
YjZiZTUwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisr
KyBiL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcApAQCAtNjEsMTYgKzYxLDE2IEBA
IGJvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVyCiAgICAgcmV0dXJuIEludGVybmFsRnVuY3Rpb25JbXA6
OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCi1KU1Zh
bHVlICpSdW50aW1lTWV0aG9kOjpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMsIEpTT2Jq
ZWN0ICp0aGlzT2JqLCBjb25zdCBMaXN0ICZhcmdzKQorSlNWYWx1ZSogUnVudGltZU1ldGhvZDo6
Y2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3Qg
TGlzdCYgYXJncykKIHsKICAgICBpZiAoX21ldGhvZExpc3QtPmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgCi0gICAgUnVudGltZU9iamVjdEltcCAqaW1wID0g
MDsKKyAgICBSdW50aW1lT2JqZWN0SW1wKiBpbXAgPSAwOwogCi0gICAgaWYgKHRoaXNPYmotPmNs
YXNzSW5mbygpID09ICZLSlM6OlJ1bnRpbWVPYmplY3RJbXA6OnNfaW5mbykgeworICAgIGlmICh0
aGlzT2JqLT5jbGFzc0luZm8oKSA9PSAmS0pTOjpSdW50aW1lT2JqZWN0SW1wOjpzX2luZm8pCiAg
ICAgICAgIGltcCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3RJbXAqPih0aGlzT2JqKTsKLSAg
ICB9IGVsc2UgeworICAgIGVsc2UgewogICAgICAgICAvLyBJZiB0aGlzT2JqIGlzIHRoZSBET00g
b2JqZWN0IGZvciBhIHBsdWdpbiwgZ2V0IHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICAgIC8vIHJ1
bnRpbWUgb2JqZWN0IGZyb20gdGhlIERPTSBvYmplY3QuCiAgICAgICAgIEpTVmFsdWUqIHZhbHVl
ID0gdGhpc09iai0+Z2V0KGV4ZWMsICJfX2FwcGxlX3J1bnRpbWVfb2JqZWN0Iik7CkBAIC04MSwx
MiArODEsMTAgQEAgSlNWYWx1ZSAqUnVudGltZU1ldGhvZDo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0
YXRlICpleGVjLCBKU09iamVjdCAqdGhpc09iaiwgY29uc3QKICAgICBpZiAoIWltcCkKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKIAotICAgIFJlZlB0cjxJbnN0
YW5jZT4gaW5zdGFuY2UgPSBpbXAtPmdldEludGVybmFsSW5zdGFuY2UoKTsKLSAgICBpZiAoIWlu
c3RhbmNlKSAKKyAgICBJbnN0YW5jZSogaW5zdGFuY2UgPSBpbXAtPmdldEludGVybmFsSW5zdGFu
Y2UoKTsKKyAgICBpZiAoIWluc3RhbmNlKQogICAgICAgICByZXR1cm4gUnVudGltZU9iamVjdElt
cDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7Ci0gICAgICAgIAotICAgIGluc3RhbmNl
LT5iZWdpbigpOwotICAgIEpTVmFsdWUgKmFWYWx1ZSA9IGluc3RhbmNlLT5pbnZva2VNZXRob2Qo
ZXhlYywgKl9tZXRob2RMaXN0LCBhcmdzKTsKLSAgICBpbnN0YW5jZS0+ZW5kKCk7Ci0gICAgcmV0
dXJuIGFWYWx1ZTsKKworICAgIEluc3RhbmNlOjpJbnZvY2F0aW9uIGludm9jYXRpb24oaW5zdGFu
Y2UsIGV4ZWMpOworICAgIHJldHVybiBpbnN0YW5jZS0+aW52b2tlTWV0aG9kKGV4ZWMsICpfbWV0
aG9kTGlzdCwgYXJncyk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5jcHAgYi9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggMzU5MmVj
MS4uOTI2ZWQ5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
CisrKyBiL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcApAQCAtMzQsMTIwICszNCw5
NiBAQCB1c2luZyBuYW1lc3BhY2UgQmluZGluZ3M7CiAKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1l
T2JqZWN0SW1wOjpzX2luZm8gPSB7ICJSdW50aW1lT2JqZWN0IiwgMCwgMCB9OwogCi1SdW50aW1l
T2JqZWN0SW1wOjpSdW50aW1lT2JqZWN0SW1wKFBhc3NSZWZQdHI8QmluZGluZ3M6Okluc3RhbmNl
PiBpKQotICAgIDogaW5zdGFuY2UoaSkKK1J1bnRpbWVPYmplY3RJbXA6OlJ1bnRpbWVPYmplY3RJ
bXAoUGFzc1JlZlB0cjxCaW5kaW5nczo6SW5zdGFuY2U+IGluc3RhbmNlKQorICAgIDogbV9pbnN0
YW5jZShpbnN0YW5jZSkKIHsKLSAgICBpbnN0YW5jZS0+cm9vdE9iamVjdCgpLT5hZGRSdW50aW1l
T2JqZWN0KHRoaXMpOworICAgIG1faW5zdGFuY2UtPnJvb3RPYmplY3QoKS0+YWRkUnVudGltZU9i
amVjdCh0aGlzKTsKICAgICBDb2xsZWN0b3I6OmNvbGxlY3RPbk1haW5UaHJlYWRPbmx5KHRoaXMp
OwogfQogCiBSdW50aW1lT2JqZWN0SW1wOjp+UnVudGltZU9iamVjdEltcCgpCiB7Ci0gICAgaWYg
KGluc3RhbmNlKQotICAgICAgICBpbnN0YW5jZS0+cm9vdE9iamVjdCgpLT5yZW1vdmVSdW50aW1l
T2JqZWN0KHRoaXMpOworICAgIGlmIChtX2luc3RhbmNlKQorICAgICAgICBtX2luc3RhbmNlLT5y
b290T2JqZWN0KCktPnJlbW92ZVJ1bnRpbWVPYmplY3QodGhpcyk7CiB9CiAKIHZvaWQgUnVudGlt
ZU9iamVjdEltcDo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgQVNTRVJUKGluc3RhbmNlKTsKLSAgICBp
bnN0YW5jZSA9IDA7CisgICAgQVNTRVJUKG1faW5zdGFuY2UpOworICAgIG1faW5zdGFuY2UgPSAw
OwogfQogCi1KU1ZhbHVlICpSdW50aW1lT2JqZWN0SW1wOjpmYWxsYmFja09iamVjdEdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitKU1ZhbHVlKiBSdW50aW1lT2JqZWN0SW1wOjpm
YWxsYmFja09iamVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAg
UnVudGltZU9iamVjdEltcCAqdGhpc09iaiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3RJbXAg
Kj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgICBSZWZQdHI8QmluZGluZ3M6Okluc3RhbmNlPiBpbnN0
YW5jZSA9IHRoaXNPYmotPmluc3RhbmNlOwotCisgICAgUnVudGltZU9iamVjdEltcCogdGhpc09i
aiA9IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3RJbXAqPihzbG90LnNsb3RCYXNlKCkpOworICAg
IEluc3RhbmNlKiBpbnN0YW5jZSA9IHRoaXNPYmotPm1faW5zdGFuY2UuZ2V0KCk7CiAgICAgaWYg
KCFpbnN0YW5jZSkKICAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMp
OwotICAgIAotICAgIGluc3RhbmNlLT5iZWdpbigpOwogCi0gICAgQ2xhc3MgKmFDbGFzcyA9IGlu
c3RhbmNlLT5nZXRDbGFzcygpOwotICAgIEpTVmFsdWUqIHJlc3VsdCA9IGFDbGFzcy0+ZmFsbGJh
Y2tPYmplY3QoZXhlYywgaW5zdGFuY2UuZ2V0KCksIHByb3BlcnR5TmFtZSk7Ci0KLSAgICBpbnN0
YW5jZS0+ZW5kKCk7Ci0gICAgICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEJpbmRp
bmdzOjpJbnN0YW5jZTo6SW52b2NhdGlvbiBpbnZvY2F0aW9uKGluc3RhbmNlLCBleGVjKTsKKyAg
ICBDbGFzcyogYUNsYXNzID0gaW5zdGFuY2UtPmdldENsYXNzKCk7CisgICAgcmV0dXJuIGFDbGFz
cy0+ZmFsbGJhY2tPYmplY3QoZXhlYywgaW5zdGFuY2UsIHByb3BlcnR5TmFtZSk7CiB9CiAKLUpT
VmFsdWUgKlJ1bnRpbWVPYmplY3RJbXA6OmZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCkKLXsgICAgCi0gICAgUnVudGltZU9iamVjdEltcCAqdGhpc09iaiA9IHN0YXRpY19j
YXN0PFJ1bnRpbWVPYmplY3RJbXAgKj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgICBSZWZQdHI8Qmlu
ZGluZ3M6Okluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNPYmotPmluc3RhbmNlOwotCitKU1ZhbHVl
KiBSdW50aW1lT2JqZWN0SW1wOjpmaWVsZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgUnVudGltZU9iamVjdEltcCogdGhpc09iaiA9IHN0YXRpY19jYXN0PFJ1bnRp
bWVPYmplY3RJbXAqPihzbG90LnNsb3RCYXNlKCkpOworICAgIEluc3RhbmNlKiBpbnN0YW5jZSA9
IHRoaXNPYmotPm1faW5zdGFuY2UuZ2V0KCk7CiAgICAgaWYgKCFpbnN0YW5jZSkKICAgICAgICAg
cmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOwotICAgIAotICAgIGluc3RhbmNl
LT5iZWdpbigpOwogCi0gICAgQ2xhc3MgKmFDbGFzcyA9IGluc3RhbmNlLT5nZXRDbGFzcygpOwot
ICAgIEZpZWxkKiBhRmllbGQgPSBhQ2xhc3MtPmZpZWxkTmFtZWQocHJvcGVydHlOYW1lLCBpbnN0
YW5jZS5nZXQoKSk7Ci0gICAgSlNWYWx1ZSAqcmVzdWx0ID0gaW5zdGFuY2UtPmdldFZhbHVlT2ZG
aWVsZChleGVjLCBhRmllbGQpOyAKLSAgICAKLSAgICBpbnN0YW5jZS0+ZW5kKCk7Ci0gICAgICAg
ICAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIEJpbmRpbmdzOjpJbnN0YW5jZTo6SW52b2Nh
dGlvbiBpbnZvY2F0aW9uKGluc3RhbmNlLCBleGVjKTsKKyAgICBDbGFzcyogYUNsYXNzID0gaW5z
dGFuY2UtPmdldENsYXNzKCk7CisgICAgRmllbGQqIGFGaWVsZCA9IGFDbGFzcy0+ZmllbGROYW1l
ZChwcm9wZXJ0eU5hbWUsIGluc3RhbmNlKTsKKyAgICByZXR1cm4gaW5zdGFuY2UtPmdldFZhbHVl
T2ZGaWVsZChleGVjLCBhRmllbGQpOwogfQogCi1KU1ZhbHVlICpSdW50aW1lT2JqZWN0SW1wOjpt
ZXRob2RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQorSlNWYWx1ZSogUnVudGlt
ZU9iamVjdEltcDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
LSAgICBSdW50aW1lT2JqZWN0SW1wICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVj
dEltcCAqPihzbG90LnNsb3RCYXNlKCkpOwotICAgIFJlZlB0cjxCaW5kaW5nczo6SW5zdGFuY2U+
IGluc3RhbmNlID0gdGhpc09iai0+aW5zdGFuY2U7Ci0KKyAgICBSdW50aW1lT2JqZWN0SW1wKiB0
aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdEltcCo+KHNsb3Quc2xvdEJhc2UoKSk7
CisgICAgSW5zdGFuY2UqIGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZS5nZXQoKTsKICAg
ICBpZiAoIWluc3RhbmNlKQogICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3Io
ZXhlYyk7CiAgICAgCi0gICAgaW5zdGFuY2UtPmJlZ2luKCk7Ci0KLSAgICBDbGFzcyAqYUNsYXNz
ID0gaW5zdGFuY2UtPmdldENsYXNzKCk7Ci0gICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gYUNs
YXNzLT5tZXRob2RzTmFtZWQocHJvcGVydHlOYW1lLCBpbnN0YW5jZS5nZXQoKSk7Ci0gICAgSlNW
YWx1ZSAqcmVzdWx0ID0gbmV3IFJ1bnRpbWVNZXRob2QoZXhlYywgcHJvcGVydHlOYW1lLCBtZXRo
b2RMaXN0KTsKLQotICAgIGluc3RhbmNlLT5lbmQoKTsKLSAgICAgICAgICAgIAotICAgIHJldHVy
biByZXN1bHQ7CisgICAgQmluZGluZ3M6Okluc3RhbmNlOjpJbnZvY2F0aW9uIGludm9jYXRpb24o
aW5zdGFuY2UsIGV4ZWMpOworICAgIENsYXNzKiBhQ2xhc3MgPSBpbnN0YW5jZS0+Z2V0Q2xhc3Mo
KTsKKyAgICBNZXRob2RMaXN0IG1ldGhvZExpc3QgPSBhQ2xhc3MtPm1ldGhvZHNOYW1lZChwcm9w
ZXJ0eU5hbWUsIGluc3RhbmNlKTsKKyAgICByZXR1cm4gbmV3IFJ1bnRpbWVNZXRob2QoZXhlYywg
cHJvcGVydHlOYW1lLCBtZXRob2RMaXN0KTsKIH0KIAogYm9vbCBSdW50aW1lT2JqZWN0SW1wOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBSdW50aW1lT2JqZWN0SW1wKiB0
aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdEltcCo+KHNsb3Quc2xvdEJhc2UoKSk7
CisgICAgSW5zdGFuY2UqIGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZS5nZXQoKTsKICAg
ICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAotICAgIGluc3RhbmNlLT5iZWdp
bigpOwotICAgIAotICAgIENsYXNzICphQ2xhc3MgPSBpbnN0YW5jZS0+Z2V0Q2xhc3MoKTsKLSAg
ICAKKworICAgIEJpbmRpbmdzOjpJbnN0YW5jZTo6SW52b2NhdGlvbiBpbnZvY2F0aW9uKGluc3Rh
bmNlLCBleGVjKTsKKyAgICBDbGFzcyogYUNsYXNzID0gaW5zdGFuY2UtPmdldENsYXNzKCk7ICAg
IAogICAgIGlmIChhQ2xhc3MpIHsKICAgICAgICAgLy8gU2VlIGlmIHRoZSBpbnN0YW5jZSBoYXMg
YSBmaWVsZCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KLSAgICAgICAgRmllbGQgKmFGaWVsZCA9
IGFDbGFzcy0+ZmllbGROYW1lZChwcm9wZXJ0eU5hbWUsIGluc3RhbmNlLmdldCgpKTsKKyAgICAg
ICAgRmllbGQgKmFGaWVsZCA9IGFDbGFzcy0+ZmllbGROYW1lZChwcm9wZXJ0eU5hbWUsIGluc3Rh
bmNlKTsKICAgICAgICAgaWYgKGFGaWVsZCkgewogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20o
dGhpcywgZmllbGRHZXR0ZXIpOwotICAgICAgICAgICAgaW5zdGFuY2UtPmVuZCgpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBOb3cg
Y2hlY2sgaWYgYSBtZXRob2Qgd2l0aCBzcGVjaWZpZWQgbmFtZSBleGlzdHMsIGlmIHNvIHJldHVy
biBhIGZ1bmN0aW9uIG9iamVjdCBmb3IKICAgICAgICAgICAgIC8vIHRoYXQgbWV0aG9kLgotICAg
ICAgICAgICAgTWV0aG9kTGlzdCBtZXRob2RMaXN0ID0gYUNsYXNzLT5tZXRob2RzTmFtZWQocHJv
cGVydHlOYW1lLCBpbnN0YW5jZS5nZXQoKSk7CisgICAgICAgICAgICBNZXRob2RMaXN0IG1ldGhv
ZExpc3QgPSBhQ2xhc3MtPm1ldGhvZHNOYW1lZChwcm9wZXJ0eU5hbWUsIGluc3RhbmNlKTsKICAg
ICAgICAgICAgIGlmIChtZXRob2RMaXN0LnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICBz
bG90LnNldEN1c3RvbSh0aGlzLCBtZXRob2RHZXR0ZXIpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGluc3RhbmNlLT5lbmQoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIFRyeSBhIGZhbGxiYWNr
IG9iamVjdC4KLSAgICAgICAgaWYgKCFhQ2xhc3MtPmZhbGxiYWNrT2JqZWN0KGV4ZWMsIGluc3Rh
bmNlLmdldCgpLCBwcm9wZXJ0eU5hbWUpLT5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlmICgh
YUNsYXNzLT5mYWxsYmFja09iamVjdChleGVjLCBpbnN0YW5jZSwgcHJvcGVydHlOYW1lKS0+aXNV
bmRlZmluZWQoKSkgewogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgZmFsbGJhY2tP
YmplY3RHZXR0ZXIpOwotICAgICAgICAgICAgaW5zdGFuY2UtPmVuZCgpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAotICAgIGluc3RhbmNlLT5l
bmQoKTsKIAogICAgIC8vIGRvbid0IGNhbGwgc3VwZXJjbGFzcywgYmVjYXVzZSBydW50aW1lIG9i
amVjdHMgY2FuJ3QgaGF2ZSBjdXN0b20gcHJvcGVydGllcyBvciBhIHByb3RvdHlwZQogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE1NSwyMiArMTMxLDE3IEBAIGJvb2wgUnVudGltZU9iamVjdEltcDo6
Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
CiAKIHZvaWQgUnVudGltZU9iamVjdEltcDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKiB2YWx1ZSkKIHsKLSAgICBpZiAoIWluc3Rh
bmNlKSB7CisgICAgaWYgKCFtX2luc3RhbmNlKSB7CiAgICAgICAgIHRocm93SW52YWxpZEFjY2Vz
c0Vycm9yKGV4ZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIFJlZlB0cjxC
aW5kaW5nczo6SW5zdGFuY2U+IHByb3RlY3RvcihpbnN0YW5jZSk7Ci0gICAgaW5zdGFuY2UtPmJl
Z2luKCk7CiAKLSAgICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS4KLSAgICBGaWVs
ZCAqYUZpZWxkID0gaW5zdGFuY2UtPmdldENsYXNzKCktPmZpZWxkTmFtZWQocHJvcGVydHlOYW1l
LCBpbnN0YW5jZS5nZXQoKSk7CisgICAgQmluZGluZ3M6Okluc3RhbmNlOjpJbnZvY2F0aW9uIGlu
dm9jYXRpb24obV9pbnN0YW5jZS5nZXQoKSwgZXhlYyk7CisgICAgRmllbGQqIGFGaWVsZCA9IG1f
aW5zdGFuY2UtPmdldENsYXNzKCktPmZpZWxkTmFtZWQocHJvcGVydHlOYW1lLCBtX2luc3RhbmNl
LmdldCgpKTsKICAgICBpZiAoYUZpZWxkKQotICAgICAgICBpbnN0YW5jZS0+c2V0VmFsdWVPZkZp
ZWxkKGV4ZWMsIGFGaWVsZCwgdmFsdWUpOwotICAgIGVsc2UgaWYgKGluc3RhbmNlLT5zdXBwb3J0
c1NldFZhbHVlT2ZVbmRlZmluZWRGaWVsZCgpKQotICAgICAgICBpbnN0YW5jZS0+c2V0VmFsdWVP
ZlVuZGVmaW5lZEZpZWxkKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwotCi0gICAgaW5zdGFu
Y2UtPmVuZCgpOworICAgICAgICBtX2luc3RhbmNlLT5zZXRWYWx1ZU9mRmllbGQoZXhlYywgYUZp
ZWxkLCB2YWx1ZSk7CisgICAgZWxzZSBpZiAobV9pbnN0YW5jZS0+c3VwcG9ydHNTZXRWYWx1ZU9m
VW5kZWZpbmVkRmllbGQoKSkKKyAgICAgICAgbV9pbnN0YW5jZS0+c2V0VmFsdWVPZlVuZGVmaW5l
ZEZpZWxkKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogfQogCiBib29sIFJ1bnRpbWVPYmpl
Y3RJbXA6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKQpAQCAt
MTgxLDU0ICsxNTIsMzkgQEAgYm9vbCBSdW50aW1lT2JqZWN0SW1wOjpkZWxldGVQcm9wZXJ0eShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJikKIAogSlNWYWx1ZSAqUnVudGltZU9iamVjdElt
cDo6ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNUeXBlIGhpbnQpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFpbnN0YW5jZSkKKyAgICBpZiAoIW1faW5zdGFuY2UpCiAgICAgICAgIHJldHVybiB0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKLSAgICAKLSAgICBKU1ZhbHVlICpyZXN1bHQ7
Ci0gICAgCi0gICAgUmVmUHRyPEJpbmRpbmdzOjpJbnN0YW5jZT4gcHJvdGVjdG9yKGluc3RhbmNl
KTsKLSAgICBpbnN0YW5jZS0+YmVnaW4oKTsKIAotICAgIHJlc3VsdCA9IGluc3RhbmNlLT5kZWZh
dWx0VmFsdWUoaGludCk7Ci0gICAgCi0gICAgaW5zdGFuY2UtPmVuZCgpOwotICAgIAotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgQmluZGluZ3M6Okluc3RhbmNlOjpJbnZvY2F0aW9uIGludm9jYXRp
b24obV9pbnN0YW5jZS5nZXQoKSwgZXhlYyk7CisgICAgcmV0dXJuIG1faW5zdGFuY2UtPmRlZmF1
bHRWYWx1ZShoaW50KTsKIH0KICAgICAKIGJvb2wgUnVudGltZU9iamVjdEltcDo6aW1wbGVtZW50
c0NhbGwoKSBjb25zdAogewotICAgIGlmICghaW5zdGFuY2UpCisgICAgaWYgKCFtX2luc3RhbmNl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIGluc3RhbmNlLT5pbXBs
ZW1lbnRzQ2FsbCgpOworICAgIHJldHVybiBtX2luc3RhbmNlLT5pbXBsZW1lbnRzQ2FsbCgpOwog
fQogCi1KU1ZhbHVlICpSdW50aW1lT2JqZWN0SW1wOjpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgTGlzdCYgYXJncykKK0pTVmFsdWUqIFJ1bnRpbWVPYmpl
Y3RJbXA6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBM
aXN0JiBhcmdzKQogewotICAgIGlmICghaW5zdGFuY2UpCisgICAgaWYgKCFtX2luc3RhbmNlKQog
ICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CiAKLSAgICBSZWZQ
dHI8QmluZGluZ3M6Okluc3RhbmNlPiBwcm90ZWN0b3IoaW5zdGFuY2UpOwotICAgIGluc3RhbmNl
LT5iZWdpbigpOwotCi0gICAgSlNWYWx1ZSAqYVZhbHVlID0gaW5zdGFuY2UtPmludm9rZURlZmF1
bHRNZXRob2QoZXhlYywgYXJncyk7Ci0gICAgCi0gICAgaW5zdGFuY2UtPmVuZCgpOwotICAgIAot
ICAgIHJldHVybiBhVmFsdWU7CisgICAgQmluZGluZ3M6Okluc3RhbmNlOjpJbnZvY2F0aW9uIGlu
dm9jYXRpb24obV9pbnN0YW5jZS5nZXQoKSwgZXhlYyk7CisgICAgcmV0dXJuIG1faW5zdGFuY2Ut
Pmludm9rZURlZmF1bHRNZXRob2QoZXhlYywgYXJncyk7CiB9CiAKIHZvaWQgUnVudGltZU9iamVj
dEltcDo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5
JiBwcm9wZXJ0eU5hbWVzKQogewotICAgIGlmICghaW5zdGFuY2UpIHsKKyAgICBpZiAoIW1faW5z
dGFuY2UpIHsKICAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaW5zdGFuY2UtPmJlZ2luKCk7Ci0gICAgaW5zdGFu
Y2UtPmdldFByb3BlcnR5TmFtZXMoZXhlYywgcHJvcGVydHlOYW1lcyk7Ci0gICAgaW5zdGFuY2Ut
PmVuZCgpOworICAgIEJpbmRpbmdzOjpJbnN0YW5jZTo6SW52b2NhdGlvbiBpbnZvY2F0aW9uKG1f
aW5zdGFuY2UuZ2V0KCksIGV4ZWMpOworICAgIG1faW5zdGFuY2UtPmdldFByb3BlcnR5TmFtZXMo
ZXhlYywgcHJvcGVydHlOYW1lcyk7CiB9CiAKIEpTT2JqZWN0KiBSdW50aW1lT2JqZWN0SW1wOjp0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oIGIvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuaAppbmRleCBiOGJhNWM4Li4yMGNmNmQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX29iamVjdC5oCisrKyBiL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKQEAg
LTM4LDE4ICszOCwxOCBAQCBjbGFzcyBSdW50aW1lT2JqZWN0SW1wIDogcHVibGljIEpTT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SdW50aW1lT2JqZWN0SW1wKCk7CiAgICAgCi0gICAg
Y29uc3QgQ2xhc3NJbmZvICpjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9Cisg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgdmlydHVhbCB2b2lkIHB1dChFeGVj
U3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSwgSlNWYWx1ZSAqdmFs
dWUpOwotICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGNv
bnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSk7Ci0gICAgdmlydHVhbCBKU1ZhbHVlICpkZWZh
dWx0VmFsdWUoRXhlY1N0YXRlICpleGVjLCBKU1R5cGUgaGludCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlTbG90Jik7CisgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlKTsKKyAgICB2aXJ0dWFsIGJv
b2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUqIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBKU1R5
cGUgaGludCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGltcGxlbWVudHNDYWxsKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCBKU1ZhbHVlICpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMsIEpT
T2JqZWN0ICp0aGlzT2JqLCBjb25zdCBMaXN0ICZhcmdzKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUq
IGNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0
ICZhcmdzKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYpOwogCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKTsKLSAg
ICBCaW5kaW5nczo6SW5zdGFuY2UgKmdldEludGVybmFsSW5zdGFuY2UoKSBjb25zdCB7IHJldHVy
biBpbnN0YW5jZS5nZXQoKTsgfQorICAgIEJpbmRpbmdzOjpJbnN0YW5jZSogZ2V0SW50ZXJuYWxJ
bnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2UuZ2V0KCk7IH0KICAgICAKICAgICBz
dGF0aWMgSlNPYmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSopOwogICAg
IApAQCAtNjIsMTEgKzYyLDExIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUnVudGltZU9i
amVjdEltcCgpOyAvLyBwcmV2ZW50IGRlZmF1bHQgY29uc3RydWN0aW9uCiAgICAgCi0gICAgc3Rh
dGljIEpTVmFsdWUgKmZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSAqLCBKU09iamVjdCAq
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIEpT
VmFsdWUgKmZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSAqLCBKU09iamVjdCAqLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIEpTVmFsdWUgKm1ldGhvZEdl
dHRlcihFeGVjU3RhdGUgKiwgSlNPYmplY3QgKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBKU1ZhbHVlKiBmYWxsYmFja09iamVjdEdldHRlcihF
eGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNs
b3QmKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSogZmllbGRHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IEpTVmFsdWUqIG1ldGhvZEdldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgIFJlZlB0cjxCaW5kaW5nczo6SW5z
dGFuY2U+IGluc3RhbmNlOworICAgIFJlZlB0cjxCaW5kaW5nczo6SW5zdGFuY2U+IG1faW5zdGFu
Y2U7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfcm9vdC5oIGIvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKaW5kZXggYWQy
ZTNhNC4uYWU1OThmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgK
KysrIGIvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJp
dmF0ZToKICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0Owog
ICAgIFByb3RlY3RDb3VudFNldCBtX3Byb3RlY3RDb3VudFNldDsKIAotICAgIEhhc2hTZXQ8UnVu
dGltZU9iamVjdEltcCo+IG1fcnVudGltZU9iamVjdHM7ICAgIAorICAgIEhhc2hTZXQ8UnVudGlt
ZU9iamVjdEltcCo+IG1fcnVudGltZU9iamVjdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBCaW5k
aW5ncwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26726</attachid>
            <date>2009-01-14 13:15:55 -0800</date>
            <delta_ts>2009-01-14 14:15:56 -0800</delta_ts>
            <desc>NPN_SetException() implementation.</desc>
            <filename>np_setexception.patch</filename>
            <type>text/plain</type>
            <size>14099</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IGM5YzI4ZmM0OWQwNzU4NmNhMTcwYTQzOGFlNWRmZmRhZjM5ZDg3NDQKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIFdlZCBKYW4gMTQg
MTM6MDk6MjAgMjAwOSAtMDgwMAoKICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY4Mjk+CiAgICBJbXBsZW1lbnQgTlBOX1NldEV4Y2VwdGlvbigpCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDI3NTI2YTMuLjkyN2U4YzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wMS0xNCAgSmVy
ZW15IE1vc2tvdmljaCAgPGplcmVteUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjgyOT4KKyAgICAgICAgSW1wbGVtZW50IE5QTl9TZXRFeGNlcHRpb24o
KQorCisgICAgICAgICogcGx1Z2lucy9uZXRzY2FwZS10aHJvdy1leGNlcHRpb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi5o
dG1sOiBBZGRlZC4KKwogMjAwOS0wMS0xMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2FwZS10aHJvdy1leGNlcHRpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2FwZS10aHJvdy1leGNlcHRpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYjc2MWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisgVGhpcyB0ZXN0cyB0aGF0IGEgcGx1Z2lu
IGNhbiB0aHJvdyBleGNlcHRpb25zLiBJZiB0aGlzIHRlc3QgaXMgc3VjY2Vzc2Z1bCB0aGUgdGV4
dCAiU1VDQ0VTUyIgdHdpY2UgYmVsb3cuCitwbHVnaW4gb2JqZWN0IHRlc3RUaHJvd0V4Y2VwdGlv
biBTVUNDRVNTCit0ZXN0IG9iamVjdCB0aHJvd0V4Y2VwdGlvbiBTVUNDRVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2FwZS10aHJvdy1leGNlcHRpb24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTc1ZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2FwZS10aHJvdy1leGNlcHRpb24uaHRtbApAQCAtMCwwICsx
LDMwIEBACis8aHRtbD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgcGx1Z2luID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3RQbHVnaW4iKTsKKyAgICB2YXIgcmVzdWx0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQxJyk7CisgICAgdHJ5IHsKKyAgICAgICAgcGx1Z2luLnRlc3RUaHJvd0V4Y2Vw
dGlvbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmVzdWx0MS5pbm5lckhUTUwgPSBl
Lm1lc3NhZ2U7CisgICAgfQorICAgIHZhciByZXN1bHQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdDInKTsKKyAgICB0cnkgeworICAgICAgICBwbHVnaW4udGVzdE9iamVjdC50aHJv
d0V4Y2VwdGlvbigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmVzdWx0Mi5pbm5lckhU
TUwgPSBlLm1lc3NhZ2U7CisgICAgfQorfQorPC9zY3JpcHQ+CisKKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpOyI+Cis8ZW1iZWQgaWQ9InRlc3RQbHVnaW4iIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Vi
a2l0LXRlc3QtbmV0c2NhcGUiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48L2VtYmVkPgorVGhp
cyB0ZXN0cyB0aGF0IGEgcGx1Z2luIGNhbiB0aHJvdyBleGNlcHRpb25zLiBJZiB0aGlzIHRlc3Qg
aXMgc3VjY2Vzc2Z1bCB0aGUgdGV4dCAiU1VDQ0VTUyIgdHdpY2UgYmVsb3cuCis8ZGl2IGlkPSJy
ZXN1bHQxIj5GQUlMVVJFPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQyIj5GQUlMVVJFPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDJhNjc4NTguLmMzZjk3NDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDEt
MTQgIEplcmVteSBNb3Nrb3ZpY2ggIDxqZXJlbXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4Mjk+CisgICAgICAgIEltcGxlbWVudCBOUE5fU2V0RXhj
ZXB0aW9uKCkKKworICAgICAgICBUaGlzIG1pcnJvcnMgdGhlIGltcGxlbWVudGF0aW9uIGluIHRo
ZSBvYmotYyBiaW5kaW5ncy4KKworICAgICAgICBUZXN0OiBwbHVnaW5zL25ldHNjYXBlLXRocm93
LWV4Y2VwdGlvbi5odG1sCisKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAg
ICAgICAoX05QTl9TZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Z2V0RXhjZXB0aW9uU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0
YXRlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZUNvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuaDoKKwogMjAwOS0wMS0xMyAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENh
cmxzc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvV2Vi
Q29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCmluZGV4IDc0MzQxNGEuLmQyYTMzZTQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlN0cmluZ1NvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiY191
dGlsaXR5LmgiCisjaW5jbHVkZSAiY19pbnN0YW5jZS5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9p
bXBsLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIKICNpbmNsdWRlICJydW50aW1lX3Jv
b3QuaCIKQEAgLTM3NSwxMSArMzc2LDExIEBAIGJvb2wgX05QTl9IYXNNZXRob2QoTlBQLCBOUE9i
amVjdCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIF9OUE5fU2V0RXhjZXB0aW9uKE5QT2JqZWN0KiwgY29uc3QgTlBVVEY4KikKK3ZvaWQg
X05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3QgKiwgY29uc3QgTlBVVEY4ICptZXNzYWdlKQogewot
ICAgIC8vIEZJWE1FOgotICAgIC8vIEJ1ZyAxOTg4ODogSW1wbGVtZW50IF9OUE5fU2V0RXhjZXB0
aW9uKCkgY29ycmVjdGx5Ci0gICAgLy8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTg4OD4KKyAgLy8gSWdub3JuaW5nIHRoZSBOUE9iamVjdCBwYXJhbSBpcyBjb25z
aXN0ZW50IHdpdGggdGhlIE1vemlsbGEgaW1wbGVtZW50YXRpb24uCisgIFVTdHJpbmcgZXhjZXB0
aW9uKG1lc3NhZ2UpOworICBDSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlvbihleGNlcHRpb24p
OwogfQogCiBib29sIF9OUE5fRW51bWVyYXRlKE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmll
cioqIGlkZW50aWZpZXIsIHVpbnQzMl90KiBjb3VudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJp
ZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCmlu
ZGV4IDM3YzNkZDguLmExMzhlZTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0
YW5jZS5jcHAKKysrIGIvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcApAQCAtMzUsMTcg
KzM1LDUyIEBACiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1l
X3Jvb3QuaCIKICNpbmNsdWRlIDxydW50aW1lL0FyZ0xpc3QuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0Vycm9yLmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTnVtYmVyQ2VsbC5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3Ry
aW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKK3VzaW5nIEpTQzo6VVN0cmluZzsKKworc3RhdGljIEpT
R2xvYmFsT2JqZWN0KiBzX2V4Y2VwdGlvbkVudmlyb25tZW50ID0gMDsgLy8gTm8gbmVlZCB0byBw
cm90ZWN0IHRoaXMgdmFsdWUsIHNpbmNlIHdlIGp1c3QgdXNlIGl0IGZvciBhIHBvaW50ZXIgY29t
cGFyaXNvbi4KKworSlNDOjpVU3RyaW5nICZnZXRFeGNlcHRpb25TdHJpbmcoKSB7CisgIC8vIFRP
RE86IElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBzdG9yZSB0aGUgZXhjZXB0aW9uIHN0cmluZyBz
dGF0aWNhbGx5PworICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTQzo6VVN0cmluZywgZXhjZXB0aW9u
U3RyLCAoKSk7CisgIHJldHVybiBleGNlcHRpb25TdHI7Cit9CisKK3ZvaWQgQ0luc3RhbmNlOjpz
ZXRHbG9iYWxFeGNlcHRpb24oVVN0cmluZyBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0KiBleGNl
cHRpb25FbnZpcm9ubWVudCkKK3sKKyAgICBnZXRFeGNlcHRpb25TdHJpbmcoKSA9IGV4Y2VwdGlv
bjsKKyAgICBzX2V4Y2VwdGlvbkVudmlyb25tZW50ID0gZXhjZXB0aW9uRW52aXJvbm1lbnQ7Cit9
CisKK3ZvaWQgQ0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIGlmIChnZXRFeGNlcHRpb25TdHJpbmcoKS5pc051bGwoKSkgewor
ICAgICAgICBBU1NFUlQoIXNfZXhjZXB0aW9uRW52aXJvbm1lbnQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFzX2V4Y2VwdGlvbkVudmlyb25tZW50IHx8IHNfZXhjZXB0aW9u
RW52aXJvbm1lbnQgPT0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSB7CisgICAgICAgIEpT
TG9jayBsb2NrKGZhbHNlKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3Is
IGdldEV4Y2VwdGlvblN0cmluZygpKTsKKyAgICB9CisKKyAgICBnZXRFeGNlcHRpb25TdHJpbmco
KSA9IFVTdHJpbmcoKTsKKworICAgIHNfZXhjZXB0aW9uRW52aXJvbm1lbnQgPSAwOworfQorCiBD
SW5zdGFuY2U6OkNJbnN0YW5jZShOUE9iamVjdCogbywgUGFzc1JlZlB0cjxSb290T2JqZWN0PiBy
b290T2JqZWN0KQogICAgIDogSW5zdGFuY2Uocm9vdE9iamVjdCkKIHsKQEAgLTk2LDYgKzEzMSw3
IEBAIEpTVmFsdWVQdHIgQ0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBNZXRob2RMaXN0JiBtZXRob2RMaXN0CiAgICAgewogICAgICAgICBKU0xvY2s6OkRyb3BB
bGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwogICAgICAgICBfb2JqZWN0LT5fY2xhc3MtPmlu
dm9rZShfb2JqZWN0LCBpZGVudCwgY0FyZ3MuZGF0YSgpLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQp
OworICAgICAgICBtb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7CiAgICAgfQog
CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCkBAIC0xMjUsOCArMTYxLDkgQEAgSlNW
YWx1ZVB0ciBDSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQogICAgIHsKICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAgICAgX29iamVjdC0+X2NsYXNzLT5pbnZva2VEZWZh
dWx0KF9vYmplY3QsIGNBcmdzLmRhdGEoKSwgY291bnQsICZyZXN1bHRWYXJpYW50KTsKKyAgICAg
ICAgbW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogICAgIH0KLSAgICAKKwog
ICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJp
YW50VmFsdWUoJmNBcmdzW2ldKTsKIApAQCAtMTU4LDggKzE5NSw5IEBAIEpTVmFsdWVQdHIgQ0lu
c3RhbmNlOjppbnZva2VDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQogICAgIHsKICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZh
bHNlKTsKICAgICAgICAgX29iamVjdC0+X2NsYXNzLT5jb25zdHJ1Y3QoX29iamVjdCwgY0FyZ3Mu
ZGF0YSgpLCBjb3VudCwgJnJlc3VsdFZhcmlhbnQpOworICAgICAgICBtb3ZlR2xvYmFsRXhjZXB0
aW9uVG9FeGVjU3RhdGUoZXhlYyk7CiAgICAgfQotICAgIAorCiAgICAgZm9yIChpID0gMDsgaSA8
IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0p
OwogCkBAIC0yMTEsNyArMjQ5LDkgQEAgdm9pZCBDSW5zdGFuY2U6OmdldFByb3BlcnR5TmFtZXMo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgbmFtZUFycmF5KQogCiAgICAgewog
ICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOwotICAgICAg
ICBpZiAoIV9vYmplY3QtPl9jbGFzcy0+ZW51bWVyYXRlKF9vYmplY3QsICZpZGVudGlmaWVycywg
JmNvdW50KSkKKyAgICAgICAgYm9vbCBvayA9IF9vYmplY3QtPl9jbGFzcy0+ZW51bWVyYXRlKF9v
YmplY3QsICZpZGVudGlmaWVycywgJmNvdW50KTsKKyAgICAgICAgbW92ZUdsb2JhbEV4Y2VwdGlv
blRvRXhlY1N0YXRlKGV4ZWMpOworICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmggYi9X
ZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAppbmRleCBiMTY5NDNhLi5mM2JlZThjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAorKysgYi9XZWJDb3JlL2JyaWRn
ZS9jL2NfaW5zdGFuY2UuaApAQCAtMzYsNiArMzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBOUE9iamVj
dCBOUE9iamVjdDsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVTdHJpbmc7CisKIG5hbWVz
cGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNzIENDbGFzczsKQEAgLTQ2LDE3ICs0OCwyMCBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENJbnN0YW5jZShvYmplY3Qs
IHJvb3RPYmplY3QpKTsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRHbG9iYWxFeGNlcHRp
b24oSlNDOjpVU3RyaW5nIGV4Y2VwdGlvbiwgSlNHbG9iYWxPYmplY3QqIGV4Y2VwdGlvbkVudmly
b25tZW50ID0gMCk7IC8vIEEgbnVsbCBleGNlcHRpb25FbnZpcm9ubWVudCBtZWFucyB0aGUgZXhj
ZXB0aW9uIHNob3VsZCBwcm9wb2dhdGUgdG8gYW55IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KKwog
ICAgIH5DSW5zdGFuY2UgKCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIENsYXNzICpnZXRDbGFzcygp
IGNvbnN0OwogCiAgICAgdmlydHVhbCBKU1ZhbHVlUHRyIHZhbHVlT2YoRXhlY1N0YXRlKikgY29u
c3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlUHRyIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKLSAgICAKKwogICAgIHZpcnR1YWwgSlNWYWx1ZVB0
ciBpbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgY29uc3QgTWV0aG9kTGlzdCYsIGNvbnN0IEFyZ0xp
c3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0aG9kKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlUHRyIGludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpOwotICAgIAorCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29u
c3RydWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBKU1ZhbHVlUHRyIGludm9rZUNvbnN0cnVjdChF
eGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKQEAgLTY1LDE0ICs3MCwxNSBAQCBwdWJsaWM6
CiAgICAgSlNWYWx1ZVB0ciBzdHJpbmdWYWx1ZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICBKU1Zh
bHVlUHRyIG51bWJlclZhbHVlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEpTVmFsdWVQdHIgYm9v
bGVhblZhbHVlKCkgY29uc3Q7Ci0gICAgCisKICAgICBOUE9iamVjdCAqZ2V0T2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gX29iamVjdDsgfQogCiAgICAgdmlydHVhbCBCaW5kaW5nTGFuZ3VhZ2UgZ2V0
QmluZGluZ0xhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gQ0xhbmd1YWdlOyB9CiAKIHByaXZhdGU6
CisgICAgc3RhdGljIHZvaWQgbW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0
ZSogZXhlYyk7CiAgICAgQ0luc3RhbmNlKE5QT2JqZWN0KiwgUGFzc1JlZlB0cjxSb290T2JqZWN0
Pik7Ci0gICAgCisKICAgICBtdXRhYmxlIENDbGFzcyAqX2NsYXNzOwogICAgIE5QT2JqZWN0ICpf
b2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwppbmRleCAyYTMzMjFiLi4wY2RkYTUxIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMDktMDEtMTQgIEplcmVteSBNb3Nrb3ZpY2ggIDxqZXJlbXlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4Mjk+CisgICAgICAgIEltcGxlbWVu
dCBOUE5fU2V0RXhjZXB0aW9uKCkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRz
Y2FwZVBsdWdJbi5zdWJwcm9qL1BsdWdpbk9iamVjdC5jcHA6CisgICAgICAgIChwbHVnaW5JbnZv
a2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi5zdWJwcm9q
L1Rlc3RPYmplY3QuY3BwOgorICAgICAgICAoaW5pdGlhbGl6ZUlkZW50aWZpZXJzKToKKyAgICAg
ICAgKHRlc3RIYXNNZXRob2QpOgorICAgICAgICAodGVzdEludm9rZSk6CisKIDIwMDktMDEtMTMg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdE5ldHNjYXBlUGx1Z0luLnN1YnByb2ovUGx1Z2luT2JqZWN0LmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi5zdWJwcm9qL1BsdWdpbk9iamVjdC5j
cHAKaW5kZXggODgxODI0YS4uOTE4MDk4MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luLnN1YnByb2ovUGx1Z2luT2JqZWN0LmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJvai9Q
bHVnaW5PYmplY3QuY3BwCkBAIC05OCw3ICs5OCw4IEBAIHN0YXRpYyBjb25zdCBOUFVURjggKnBs
dWdpblByb3BlcnR5SWRlbnRpZmllck5hbWVzW05VTV9QUk9QRVJUWV9JREVOVElGSUVSU10gPSB7
CiAjZGVmaW5lIElEX1RFU1RfSURFTlRJRklFUl9UT19JTlQgICAxMwogI2RlZmluZSBJRF9URVNU
X1BPU1RVUkxfRklMRSAgICAgICAgMTQKICNkZWZpbmUgSURfVEVTVF9DT05TVFJVQ1QgICAgICAg
ICAgIDE1Ci0jZGVmaW5lIE5VTV9NRVRIT0RfSURFTlRJRklFUlMgICAgICAxNgorI2RlZmluZSBJ
RF9URVNUX1RIUk9XX0VYQ0VQVElPTl9NRVRIT0QgMTYKKyNkZWZpbmUgTlVNX01FVEhPRF9JREVO
VElGSUVSUyAgICAgIDE3CiAKIHN0YXRpYyBOUElkZW50aWZpZXIgcGx1Z2luTWV0aG9kSWRlbnRp
ZmllcnNbTlVNX01FVEhPRF9JREVOVElGSUVSU107CiBzdGF0aWMgY29uc3QgTlBVVEY4ICpwbHVn
aW5NZXRob2RJZGVudGlmaWVyTmFtZXNbTlVNX01FVEhPRF9JREVOVElGSUVSU10gPSB7CkBAIC0x
MTgsNiArMTE5LDcgQEAgc3RhdGljIGNvbnN0IE5QVVRGOCAqcGx1Z2luTWV0aG9kSWRlbnRpZmll
ck5hbWVzW05VTV9NRVRIT0RfSURFTlRJRklFUlNdID0gewogICAgICJ0ZXN0SWRlbnRpZmllclRv
SW50IiwKICAgICAidGVzdFBvc3RVUkxGaWxlIiwKICAgICAidGVzdENvbnN0cnVjdCIsCisgICAg
InRlc3RUaHJvd0V4Y2VwdGlvbiIsCiB9OwogCiBzdGF0aWMgTlBVVEY4KiBjcmVhdGVDU3RyaW5n
RnJvbU5QVmFyaWFudChjb25zdCBOUFZhcmlhbnQqIHZhcmlhbnQpCkBAIC01NzMsNiArNTc1LDEw
IEBAIHN0YXRpYyBib29sIHBsdWdpbkludm9rZShOUE9iamVjdCogaGVhZGVyLCBOUElkZW50aWZp
ZXIgbmFtZSwgY29uc3QgTlBWYXJpYW50KiBhCiAgICAgICAgIHJldHVybiB0ZXN0UG9zdFVSTEZp
bGUocGx1Z2luLCBhcmdzLCBhcmdDb3VudCwgcmVzdWx0KTsKICAgICBlbHNlIGlmIChuYW1lID09
IHBsdWdpbk1ldGhvZElkZW50aWZpZXJzW0lEX1RFU1RfQ09OU1RSVUNUXSkKICAgICAgICAgcmV0
dXJuIHRlc3RDb25zdHJ1Y3QocGx1Z2luLCBhcmdzLCBhcmdDb3VudCwgcmVzdWx0KTsKKyAgICBl
bHNlIGlmIChuYW1lID09IHBsdWdpbk1ldGhvZElkZW50aWZpZXJzW0lEX1RFU1RfVEhST1dfRVhD
RVBUSU9OX01FVEhPRF0pIHsKKyAgICAgICAgYnJvd3Nlci0+c2V0ZXhjZXB0aW9uKGhlYWRlciwg
InBsdWdpbiBvYmplY3QgdGVzdFRocm93RXhjZXB0aW9uIFNVQ0NFU1MiKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi5zdWJwcm9qL1Rl
c3RPYmplY3QuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1
Z0luLnN1YnByb2ovVGVzdE9iamVjdC5jcHAKaW5kZXggNGNkOTQwMi4uMTQxMTczYiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luLnN1YnBy
b2ovVGVzdE9iamVjdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5l
dHNjYXBlUGx1Z0luLnN1YnByb2ovVGVzdE9iamVjdC5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNp
bmNsdWRlIDxzdGRsaWIuaD4KIAogc3RhdGljIGJvb2wgdGVzdEVudW1lcmF0ZShOUE9iamVjdCAq
bnBvYmosIE5QSWRlbnRpZmllciAqKnZhbHVlLCB1aW50MzJfdCAqY291bnQpOworc3RhdGljIGJv
b2wgdGVzdEhhc01ldGhvZChOUE9iamVjdCAqb2JqLCBOUElkZW50aWZpZXIgbmFtZSk7CitzdGF0
aWMgYm9vbCB0ZXN0SW52b2tlKE5QT2JqZWN0ICpvYmosIE5QSWRlbnRpZmllciBuYW1lLCBjb25z
dCBOUFZhcmlhbnQgKmFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQgKnJlc3VsdCk7
CiBzdGF0aWMgYm9vbCB0ZXN0SGFzUHJvcGVydHkoTlBPYmplY3QgKm9iaiwgTlBJZGVudGlmaWVy
IG5hbWUpOwogc3RhdGljIGJvb2wgdGVzdEdldFByb3BlcnR5KE5QT2JqZWN0KiwgTlBJZGVudGlm
aWVyIG5hbWUsIE5QVmFyaWFudCopOwogc3RhdGljIE5QT2JqZWN0ICp0ZXN0QWxsb2NhdGUoTlBQ
IG5wcCwgTlBDbGFzcyAqdGhlQ2xhc3MpOwpAQCAtNDEsOCArNDMsOCBAQCBzdGF0aWMgTlBDbGFz
cyB0ZXN0Q2xhc3MgPSB7CiAgICAgdGVzdEFsbG9jYXRlLCAKICAgICB0ZXN0RGVhbGxvY2F0ZSwg
CiAgICAgMCwKLSAgICAwLAotICAgIDAsCisgICAgdGVzdEhhc01ldGhvZCwKKyAgICB0ZXN0SW52
b2tlLAogICAgIDAsCiAgICAgdGVzdEhhc1Byb3BlcnR5LAogICAgIHRlc3RHZXRQcm9wZXJ0eSwK
QEAgLTcxLDkgKzczLDE4IEBAIHN0YXRpYyBjb25zdCBOUFVURjggKnRlc3RJZGVudGlmaWVyTmFt
ZXNbTlVNX1RFU1RfSURFTlRJRklFUlNdID0gewogICAgICJvYmplY3RQb2ludGVyIiwKIH07CiAK
KyNkZWZpbmUgSURfVEhST1dfRVhDRVBUSU9OX01FVEhPRCAgIDAKKyNkZWZpbmUgTlVNX01FVEhP
RF9JREVOVElGSUVSUyAgICAgIDEKKworc3RhdGljIE5QSWRlbnRpZmllciB0ZXN0TWV0aG9kSWRl
bnRpZmllcnNbTlVNX01FVEhPRF9JREVOVElGSUVSU107CitzdGF0aWMgY29uc3QgTlBVVEY4ICp0
ZXN0TWV0aG9kSWRlbnRpZmllck5hbWVzW05VTV9NRVRIT0RfSURFTlRJRklFUlNdID0geworICAg
ICJ0aHJvd0V4Y2VwdGlvbiIsCit9OworCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSWRlbnRpZmll
cnModm9pZCkKIHsKICAgICBicm93c2VyLT5nZXRzdHJpbmdpZGVudGlmaWVycyh0ZXN0SWRlbnRp
Zmllck5hbWVzLCBOVU1fVEVTVF9JREVOVElGSUVSUywgdGVzdElkZW50aWZpZXJzKTsKKyAgICBi
cm93c2VyLT5nZXRzdHJpbmdpZGVudGlmaWVycyh0ZXN0TWV0aG9kSWRlbnRpZmllck5hbWVzLCBO
VU1fTUVUSE9EX0lERU5USUZJRVJTLCB0ZXN0TWV0aG9kSWRlbnRpZmllcnMpOwogfQogCiBzdGF0
aWMgTlBPYmplY3QgKnRlc3RBbGxvY2F0ZShOUFAgbnBwLCBOUENsYXNzICp0aGVDbGFzcykKQEAg
LTkzLDYgKzEwNCwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0RGVhbGxvY2F0ZShOUE9iamVjdCAqb2Jq
KQogICAgIGZyZWUob2JqKTsKIH0KIAorc3RhdGljIGJvb2wgdGVzdEhhc01ldGhvZChOUE9iamVj
dCAqb2JqLCBOUElkZW50aWZpZXIgbmFtZSkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgTlVNX01FVEhPRF9JREVOVElGSUVSUzsgaSsrKSB7CisgICAgICAgIGlmICh0ZXN0TWV0aG9k
SWRlbnRpZmllcnNbaV0gPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIHRlc3RJbnZva2UoTlBPYmplY3Qg
KmhlYWRlciwgTlBJZGVudGlmaWVyIG5hbWUsIGNvbnN0IE5QVmFyaWFudCAqYXJncywgdWludDMy
X3QgYXJnQ291bnQsIE5QVmFyaWFudCAqcmVzdWx0KQoreworICAgIGlmIChuYW1lID09IHRlc3RN
ZXRob2RJZGVudGlmaWVyc1tJRF9USFJPV19FWENFUFRJT05fTUVUSE9EXSkgeworICAgICAgICBi
cm93c2VyLT5zZXRleGNlcHRpb24oaGVhZGVyLCAidGVzdCBvYmplY3QgdGhyb3dFeGNlcHRpb24g
U1VDQ0VTUyIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICByZXR1cm4gZmFs
c2U7Cit9CisKIHN0YXRpYyBib29sIHRlc3RIYXNQcm9wZXJ0eShOUE9iamVjdCAqb2JqLCBOUElk
ZW50aWZpZXIgbmFtZSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTlVNX1RFU1Rf
SURFTlRJRklFUlM7IGkrKykgewo=
</data>
<flag name="review"
          id="12739"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26729</attachid>
            <date>2009-01-14 14:02:59 -0800</date>
            <delta_ts>2009-01-14 14:15:56 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>np_setexception.patch</filename>
            <type>text/plain</type>
            <size>13716</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDRlMTU5ZmUyMDM5NTM2ZjYwNWY1NjMzNmUyZTA4YWY5NGM3Y2JhOTIKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIFdlZCBKYW4gMTQg
MTM6NTk6MDkgMjAwOSAtMDgwMAoKICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY4Mjk+CiAgICAKICAgIEltcGxlbWVudCBOUE5fU2V0RXhjZXB0aW9uKCkKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMjc1MjZhMy4uOTI3ZThjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDA5LTAxLTE0
ICBKZXJlbXkgTW9za292aWNoICA8amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2ODI5PgorICAgICAgICBJbXBsZW1lbnQgTlBOX1NldEV4Y2Vw
dGlvbigpCisKKyAgICAgICAgKiBwbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvbmV0c2NhcGUtdGhyb3ctZXhjZXB0
aW9uLmh0bWw6IEFkZGVkLgorCiAyMDA5LTAxLTEzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmViNzYxZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtdGhyb3ctZXhj
ZXB0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKyBUaGlzIHRlc3RzIHRoYXQgYSBw
bHVnaW4gY2FuIHRocm93IGV4Y2VwdGlvbnMuIElmIHRoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIHRo
ZSB0ZXh0ICJTVUNDRVNTIiB0d2ljZSBiZWxvdy4KK3BsdWdpbiBvYmplY3QgdGVzdFRocm93RXhj
ZXB0aW9uIFNVQ0NFU1MKK3Rlc3Qgb2JqZWN0IHRocm93RXhjZXB0aW9uIFNVQ0NFU1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtdGhyb3ctZXhjZXB0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNzVkZTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi5odG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzxodG1sPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBwbHVnaW4gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdFBsdWdpbiIpOworICAgIHZhciByZXN1bHQxID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdDEnKTsKKyAgICB0cnkgeworICAgICAgICBwbHVnaW4udGVzdFRocm93
RXhjZXB0aW9uKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXN1bHQxLmlubmVySFRN
TCA9IGUubWVzc2FnZTsKKyAgICB9CisgICAgdmFyIHJlc3VsdDIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0MicpOworICAgIHRyeSB7CisgICAgICAgIHBsdWdpbi50ZXN0T2JqZWN0
LnRocm93RXhjZXB0aW9uKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXN1bHQyLmlu
bmVySFRNTCA9IGUubWVzc2FnZTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCk7Ij4KKzxlbWJlZCBpZD0idGVzdFBsdWdpbiIgdHlwZT0iYXBwbGljYXRpb24v
eC13ZWJraXQtdGVzdC1uZXRzY2FwZSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjwvZW1iZWQ+
CitUaGlzIHRlc3RzIHRoYXQgYSBwbHVnaW4gY2FuIHRocm93IGV4Y2VwdGlvbnMuIElmIHRoaXMg
dGVzdCBpcyBzdWNjZXNzZnVsIHRoZSB0ZXh0ICJTVUNDRVNTIiB0d2ljZSBiZWxvdy4KKzxkaXYg
aWQ9InJlc3VsdDEiPkZBSUxVUkU8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdDIiPkZBSUxVUkU8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMmE2Nzg1OC4uYzNmOTc0NCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAw
OS0wMS0xNCAgSmVyZW15IE1vc2tvdmljaCAgPGplcmVteUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyOT4KKyAgICAgICAgSW1wbGVtZW50IE5QTl9T
ZXRFeGNlcHRpb24oKQorCisgICAgICAgIFRoaXMgbWlycm9ycyB0aGUgaW1wbGVtZW50YXRpb24g
aW4gdGhlIG9iai1jIGJpbmRpbmdzLgorCisgICAgICAgIFRlc3Q6IHBsdWdpbnMvbmV0c2NhcGUt
dGhyb3ctZXhjZXB0aW9uLmh0bWwKKworICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6
CisgICAgICAgIChfTlBOX1NldEV4Y2VwdGlvbik6CisgICAgICAgICogYnJpZGdlL2MvY19pbnN0
YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpnZXRFeGNlcHRpb25TdHJpbmcpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24pOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9F
eGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjppbnZva2VNZXRo
b2QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0
aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyk6
CisgICAgICAgICogYnJpZGdlL2MvY19pbnN0YW5jZS5oOgorCiAyMDA5LTAxLTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAg
Yi9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggNzQzNDE0YS4uYzcyMjA4ZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1dlYkNvcmUv
YnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJjX3V0aWxpdHkuaCIKKyNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAibnBydW50
aW1lX2ltcGwuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfcHJpdi5oIgogI2luY2x1ZGUgInJ1bnRp
bWVfcm9vdC5oIgpAQCAtMzc1LDExICszNzYsMTEgQEAgYm9vbCBfTlBOX0hhc01ldGhvZChOUFAs
IE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3QqLCBjb25zdCBOUFVURjgqKQor
dm9pZCBfTlBOX1NldEV4Y2VwdGlvbihOUE9iamVjdCosIGNvbnN0IE5QVVRGOCogbWVzc2FnZSkK
IHsKLSAgICAvLyBGSVhNRToKLSAgICAvLyBCdWcgMTk4ODg6IEltcGxlbWVudCBfTlBOX1NldEV4
Y2VwdGlvbigpIGNvcnJlY3RseQotICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4ODg+CisgICAgLy8gSWdub3JuaW5nIHRoZSBOUE9iamVjdCBwYXJhbSBp
cyBjb25zaXN0ZW50IHdpdGggdGhlIE1vemlsbGEgaW1wbGVtZW50YXRpb24uCisgICAgVVN0cmlu
ZyBleGNlcHRpb24obWVzc2FnZSk7CisgICAgQ0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24o
ZXhjZXB0aW9uKTsKIH0KIAogYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAsIE5QT2JqZWN0KiBvLCBO
UElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwIGIvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3Rh
bmNlLmNwcAppbmRleCAzN2MzZGQ4Li4zYjhjNjBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRn
ZS9jL2NfaW5zdGFuY2UuY3BwCisrKyBiL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAK
QEAgLTM1LDE3ICszNSw0NSBAQAogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVk
ZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+CisjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU051bWJlckNl
bGwuaD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCit1c2luZyBKU0M6OlVTdHJpbmc7CisK
K0pTQzo6VVN0cmluZyAmc2hhcmVkRXhjZXB0aW9uU3RyaW5nKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEpTQzo6VVN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7CisgICAgcmV0dXJuIGV4
Y2VwdGlvblN0cjsKK30KKwordm9pZCBDSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlvbihVU3Ry
aW5nIGV4Y2VwdGlvbikKK3sKKyAgICBzaGFyZWRFeGNlcHRpb25TdHJpbmcoKSA9IGV4Y2VwdGlv
bjsKK30KKwordm9pZCBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKHNoYXJlZEV4Y2VwdGlvblN0cmluZygpLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB7CisgICAgICAgIEpTTG9jayBsb2NrKGZhbHNl
KTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3IsIHNoYXJlZEV4Y2VwdGlv
blN0cmluZygpKTsKKyAgICB9CisKKyAgICBzaGFyZWRFeGNlcHRpb25TdHJpbmcoKSA9IFVTdHJp
bmcoKTsKK30KKwogQ0luc3RhbmNlOjpDSW5zdGFuY2UoTlBPYmplY3QqIG8sIFBhc3NSZWZQdHI8
Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKICAgICA6IEluc3RhbmNlKHJvb3RPYmplY3QpCiB7CkBA
IC05Niw2ICsxMjQsNyBAQCBKU1ZhbHVlUHRyIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgTWV0aG9kTGlzdCYgbWV0aG9kTGlzdAogICAgIHsKICAgICAgICAg
SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZhbHNlKTsKICAgICAgICAgX29iamVj
dC0+X2NsYXNzLT5pbnZva2UoX29iamVjdCwgaWRlbnQsIGNBcmdzLmRhdGEoKSwgY291bnQsICZy
ZXN1bHRWYXJpYW50KTsKKyAgICAgICAgbW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4
ZWMpOwogICAgIH0KIAogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQpAQCAtMTI1LDgg
KzE1NCw5IEBAIEpTVmFsdWVQdHIgQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKICAgICB7CiAgICAgICAgIEpTTG9jazo6
RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhmYWxzZSk7CiAgICAgICAgIF9vYmplY3QtPl9jbGFz
cy0+aW52b2tlRGVmYXVsdChfb2JqZWN0LCBjQXJncy5kYXRhKCksIGNvdW50LCAmcmVzdWx0VmFy
aWFudCk7CisgICAgICAgIG1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKICAg
ICB9Ci0gICAgCisKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgX05Q
Tl9SZWxlYXNlVmFyaWFudFZhbHVlKCZjQXJnc1tpXSk7CiAKQEAgLTE1OCw4ICsxODgsOSBAQCBK
U1ZhbHVlUHRyIENJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgQXJnTGlzdCYgYXJncykKICAgICB7CiAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRy
b3BBbGxMb2NrcyhmYWxzZSk7CiAgICAgICAgIF9vYmplY3QtPl9jbGFzcy0+Y29uc3RydWN0KF9v
YmplY3QsIGNBcmdzLmRhdGEoKSwgY291bnQsICZyZXN1bHRWYXJpYW50KTsKKyAgICAgICAgbW92
ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOwogICAgIH0KLSAgICAKKwogICAgIGZv
ciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFs
dWUoJmNBcmdzW2ldKTsKIApAQCAtMjExLDcgKzI0Miw5IEBAIHZvaWQgQ0luc3RhbmNlOjpnZXRQ
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIG5hbWVBcnJh
eSkKIAogICAgIHsKICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGZh
bHNlKTsKLSAgICAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmVudW1lcmF0ZShfb2JqZWN0LCAm
aWRlbnRpZmllcnMsICZjb3VudCkpCisgICAgICAgIGJvb2wgb2sgPSBfb2JqZWN0LT5fY2xhc3Mt
PmVudW1lcmF0ZShfb2JqZWN0LCAmaWRlbnRpZmllcnMsICZjb3VudCk7CisgICAgICAgIG1vdmVH
bG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKKyAgICAgICAgaWYgKCFvaykKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL2MvY19p
bnN0YW5jZS5oIGIvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgKaW5kZXggYjE2OTQzYS4u
ZTRiOTJjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgKKysrIGIv
V2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgKQEAgLTM2LDYgKzM2LDggQEAgdHlwZWRlZiBz
dHJ1Y3QgTlBPYmplY3QgTlBPYmplY3Q7CiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBVU3Ry
aW5nOworCiBuYW1lc3BhY2UgQmluZGluZ3MgewogCiBjbGFzcyBDQ2xhc3M7CkBAIC00NiwxNyAr
NDgsMjAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDSW5z
dGFuY2Uob2JqZWN0LCByb290T2JqZWN0KSk7CiAgICAgfQorCisgICAgc3RhdGljIHZvaWQgc2V0
R2xvYmFsRXhjZXB0aW9uKEpTQzo6VVN0cmluZyBleGNlcHRpb24pOworCiAgICAgfkNJbnN0YW5j
ZSAoKTsKLSAgICAKKwogICAgIHZpcnR1YWwgQ2xhc3MgKmdldENsYXNzKCkgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIEpTVmFsdWVQdHIgdmFsdWVPZihFeGVjU3RhdGUqKSBjb25zdDsKICAgICB2aXJ0
dWFsIEpTVmFsdWVQdHIgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUpIGNvbnN0OwotICAgIAorCiAgICAgdmlydHVhbCBKU1ZhbHVlUHRyIGludm9rZU1ldGhv
ZChFeGVjU3RhdGUqLCBjb25zdCBNZXRob2RMaXN0JiwgY29uc3QgQXJnTGlzdCYpOwogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25zdDsKICAgICB2aXJ0
dWFsIEpTVmFsdWVQdHIgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqLCBjb25zdCBBcmdM
aXN0Jik7Ci0gICAgCisKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJ1Y3QoKSBjb25z
dDsKICAgICB2aXJ0dWFsIEpTVmFsdWVQdHIgaW52b2tlQ29uc3RydWN0KEV4ZWNTdGF0ZSosIGNv
bnN0IEFyZ0xpc3QmKTsKIApAQCAtNjUsMTQgKzcwLDE1IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVl
UHRyIHN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEpTVmFsdWVQdHIgbnVtYmVy
VmFsdWUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgSlNWYWx1ZVB0ciBib29sZWFuVmFsdWUoKSBj
b25zdDsKLSAgICAKKwogICAgIE5QT2JqZWN0ICpnZXRPYmplY3QoKSBjb25zdCB7IHJldHVybiBf
b2JqZWN0OyB9CiAKICAgICB2aXJ0dWFsIEJpbmRpbmdMYW5ndWFnZSBnZXRCaW5kaW5nTGFuZ3Vh
Z2UoKSBjb25zdCB7IHJldHVybiBDTGFuZ3VhZ2U7IH0KIAogcHJpdmF0ZToKKyAgICBzdGF0aWMg
dm9pZCBtb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKTsKICAg
ICBDSW5zdGFuY2UoTlBPYmplY3QqLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+KTsKLSAgICAKKwog
ICAgIG11dGFibGUgQ0NsYXNzICpfY2xhc3M7CiAgICAgTlBPYmplY3QgKl9vYmplY3Q7CiB9Owpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDJhMzMyMWIuLjBjZGRhNTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0wMS0x
NCAgSmVyZW15IE1vc2tvdmljaCAgPGplcmVteUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyOT4KKyAgICAgICAgSW1wbGVtZW50IE5QTl9TZXRFeGNl
cHRpb24oKQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luLnN1
YnByb2ovUGx1Z2luT2JqZWN0LmNwcDoKKyAgICAgICAgKHBsdWdpbkludm9rZSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luLnN1YnByb2ovVGVzdE9iamVjdC5j
cHA6CisgICAgICAgIChpbml0aWFsaXplSWRlbnRpZmllcnMpOgorICAgICAgICAodGVzdEhhc01l
dGhvZCk6CisgICAgICAgICh0ZXN0SW52b2tlKToKKwogMjAwOS0wMS0xMyAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQ
bHVnSW4uc3VicHJvai9QbHVnaW5PYmplY3QuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE5ldHNjYXBlUGx1Z0luLnN1YnByb2ovUGx1Z2luT2JqZWN0LmNwcAppbmRleCA4ODE4
MjRhLi45MTgwOTgzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
TmV0c2NhcGVQbHVnSW4uc3VicHJvai9QbHVnaW5PYmplY3QuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi5zdWJwcm9qL1BsdWdpbk9iamVjdC5j
cHAKQEAgLTk4LDcgKzk4LDggQEAgc3RhdGljIGNvbnN0IE5QVVRGOCAqcGx1Z2luUHJvcGVydHlJ
ZGVudGlmaWVyTmFtZXNbTlVNX1BST1BFUlRZX0lERU5USUZJRVJTXSA9IHsKICNkZWZpbmUgSURf
VEVTVF9JREVOVElGSUVSX1RPX0lOVCAgIDEzCiAjZGVmaW5lIElEX1RFU1RfUE9TVFVSTF9GSUxF
ICAgICAgICAxNAogI2RlZmluZSBJRF9URVNUX0NPTlNUUlVDVCAgICAgICAgICAgMTUKLSNkZWZp
bmUgTlVNX01FVEhPRF9JREVOVElGSUVSUyAgICAgIDE2CisjZGVmaW5lIElEX1RFU1RfVEhST1df
RVhDRVBUSU9OX01FVEhPRCAxNgorI2RlZmluZSBOVU1fTUVUSE9EX0lERU5USUZJRVJTICAgICAg
MTcKIAogc3RhdGljIE5QSWRlbnRpZmllciBwbHVnaW5NZXRob2RJZGVudGlmaWVyc1tOVU1fTUVU
SE9EX0lERU5USUZJRVJTXTsKIHN0YXRpYyBjb25zdCBOUFVURjggKnBsdWdpbk1ldGhvZElkZW50
aWZpZXJOYW1lc1tOVU1fTUVUSE9EX0lERU5USUZJRVJTXSA9IHsKQEAgLTExOCw2ICsxMTksNyBA
QCBzdGF0aWMgY29uc3QgTlBVVEY4ICpwbHVnaW5NZXRob2RJZGVudGlmaWVyTmFtZXNbTlVNX01F
VEhPRF9JREVOVElGSUVSU10gPSB7CiAgICAgInRlc3RJZGVudGlmaWVyVG9JbnQiLAogICAgICJ0
ZXN0UG9zdFVSTEZpbGUiLAogICAgICJ0ZXN0Q29uc3RydWN0IiwKKyAgICAidGVzdFRocm93RXhj
ZXB0aW9uIiwKIH07CiAKIHN0YXRpYyBOUFVURjgqIGNyZWF0ZUNTdHJpbmdGcm9tTlBWYXJpYW50
KGNvbnN0IE5QVmFyaWFudCogdmFyaWFudCkKQEAgLTU3Myw2ICs1NzUsMTAgQEAgc3RhdGljIGJv
b2wgcGx1Z2luSW52b2tlKE5QT2JqZWN0KiBoZWFkZXIsIE5QSWRlbnRpZmllciBuYW1lLCBjb25z
dCBOUFZhcmlhbnQqIGEKICAgICAgICAgcmV0dXJuIHRlc3RQb3N0VVJMRmlsZShwbHVnaW4sIGFy
Z3MsIGFyZ0NvdW50LCByZXN1bHQpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gcGx1Z2luTWV0aG9k
SWRlbnRpZmllcnNbSURfVEVTVF9DT05TVFJVQ1RdKQogICAgICAgICByZXR1cm4gdGVzdENvbnN0
cnVjdChwbHVnaW4sIGFyZ3MsIGFyZ0NvdW50LCByZXN1bHQpOworICAgIGVsc2UgaWYgKG5hbWUg
PT0gcGx1Z2luTWV0aG9kSWRlbnRpZmllcnNbSURfVEVTVF9USFJPV19FWENFUFRJT05fTUVUSE9E
XSkgeworICAgICAgICBicm93c2VyLT5zZXRleGNlcHRpb24oaGVhZGVyLCAicGx1Z2luIG9iamVj
dCB0ZXN0VGhyb3dFeGNlcHRpb24gU1VDQ0VTUyIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luLnN1YnByb2ovVGVzdE9iamVjdC5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJvai9U
ZXN0T2JqZWN0LmNwcAppbmRleCA0Y2Q5NDAyLi4wZWFkYTkyIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJvai9UZXN0T2JqZWN0
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4u
c3VicHJvai9UZXN0T2JqZWN0LmNwcApAQCAtMzAsNyArMzAsOSBAQAogI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogCiBzdGF0aWMgYm9vbCB0ZXN0RW51bWVyYXRlKE5QT2JqZWN0ICpucG9iaiwgTlBJZGVu
dGlmaWVyICoqdmFsdWUsIHVpbnQzMl90ICpjb3VudCk7Ci1zdGF0aWMgYm9vbCB0ZXN0SGFzUHJv
cGVydHkoTlBPYmplY3QgKm9iaiwgTlBJZGVudGlmaWVyIG5hbWUpOworc3RhdGljIGJvb2wgdGVz
dEhhc01ldGhvZChOUE9iamVjdCAqb2JqLCBOUElkZW50aWZpZXIgbmFtZSk7CitzdGF0aWMgYm9v
bCB0ZXN0SW52b2tlKE5QT2JqZWN0KiwgTlBJZGVudGlmaWVyIG5hbWUsIGNvbnN0IE5QVmFyaWFu
dCogYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCogcmVzdWx0KTsKK3N0YXRpYyBi
b29sIHRlc3RIYXNQcm9wZXJ0eShOUE9iamVjdCosIE5QSWRlbnRpZmllciBuYW1lKTsKIHN0YXRp
YyBib29sIHRlc3RHZXRQcm9wZXJ0eShOUE9iamVjdCosIE5QSWRlbnRpZmllciBuYW1lLCBOUFZh
cmlhbnQqKTsKIHN0YXRpYyBOUE9iamVjdCAqdGVzdEFsbG9jYXRlKE5QUCBucHAsIE5QQ2xhc3Mg
KnRoZUNsYXNzKTsKIHN0YXRpYyB2b2lkIHRlc3REZWFsbG9jYXRlKE5QT2JqZWN0ICpvYmopOwpA
QCAtNDEsOCArNDMsOCBAQCBzdGF0aWMgTlBDbGFzcyB0ZXN0Q2xhc3MgPSB7CiAgICAgdGVzdEFs
bG9jYXRlLCAKICAgICB0ZXN0RGVhbGxvY2F0ZSwgCiAgICAgMCwKLSAgICAwLAotICAgIDAsCisg
ICAgdGVzdEhhc01ldGhvZCwKKyAgICB0ZXN0SW52b2tlLAogICAgIDAsCiAgICAgdGVzdEhhc1By
b3BlcnR5LAogICAgIHRlc3RHZXRQcm9wZXJ0eSwKQEAgLTcxLDkgKzczLDE4IEBAIHN0YXRpYyBj
b25zdCBOUFVURjggKnRlc3RJZGVudGlmaWVyTmFtZXNbTlVNX1RFU1RfSURFTlRJRklFUlNdID0g
ewogICAgICJvYmplY3RQb2ludGVyIiwKIH07CiAKKyNkZWZpbmUgSURfVEhST1dfRVhDRVBUSU9O
X01FVEhPRCAgIDAKKyNkZWZpbmUgTlVNX01FVEhPRF9JREVOVElGSUVSUyAgICAgIDEKKworc3Rh
dGljIE5QSWRlbnRpZmllciB0ZXN0TWV0aG9kSWRlbnRpZmllcnNbTlVNX01FVEhPRF9JREVOVElG
SUVSU107CitzdGF0aWMgY29uc3QgTlBVVEY4ICp0ZXN0TWV0aG9kSWRlbnRpZmllck5hbWVzW05V
TV9NRVRIT0RfSURFTlRJRklFUlNdID0geworICAgICJ0aHJvd0V4Y2VwdGlvbiIsCit9OworCiBz
dGF0aWMgdm9pZCBpbml0aWFsaXplSWRlbnRpZmllcnModm9pZCkKIHsKICAgICBicm93c2VyLT5n
ZXRzdHJpbmdpZGVudGlmaWVycyh0ZXN0SWRlbnRpZmllck5hbWVzLCBOVU1fVEVTVF9JREVOVElG
SUVSUywgdGVzdElkZW50aWZpZXJzKTsKKyAgICBicm93c2VyLT5nZXRzdHJpbmdpZGVudGlmaWVy
cyh0ZXN0TWV0aG9kSWRlbnRpZmllck5hbWVzLCBOVU1fTUVUSE9EX0lERU5USUZJRVJTLCB0ZXN0
TWV0aG9kSWRlbnRpZmllcnMpOwogfQogCiBzdGF0aWMgTlBPYmplY3QgKnRlc3RBbGxvY2F0ZShO
UFAgbnBwLCBOUENsYXNzICp0aGVDbGFzcykKQEAgLTkzLDcgKzEwNCwyNSBAQCBzdGF0aWMgdm9p
ZCB0ZXN0RGVhbGxvY2F0ZShOUE9iamVjdCAqb2JqKQogICAgIGZyZWUob2JqKTsKIH0KIAotc3Rh
dGljIGJvb2wgdGVzdEhhc1Byb3BlcnR5KE5QT2JqZWN0ICpvYmosIE5QSWRlbnRpZmllciBuYW1l
KQorc3RhdGljIGJvb2wgdGVzdEhhc01ldGhvZChOUE9iamVjdCAqb2JqLCBOUElkZW50aWZpZXIg
bmFtZSkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTlVNX01FVEhPRF9JREVOVElG
SUVSUzsgaSsrKSB7CisgICAgICAgIGlmICh0ZXN0TWV0aG9kSWRlbnRpZmllcnNbaV0gPT0gbmFt
ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyBib29sIHRlc3RJbnZva2UoTlBPYmplY3QqIGhlYWRlciwgTlBJZGVudGlmaWVy
IG5hbWUsIGNvbnN0IE5QVmFyaWFudCogYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFu
dCogcmVzdWx0KQoreworICAgIGlmIChuYW1lID09IHRlc3RNZXRob2RJZGVudGlmaWVyc1tJRF9U
SFJPV19FWENFUFRJT05fTUVUSE9EXSkgeworICAgICAgICBicm93c2VyLT5zZXRleGNlcHRpb24o
aGVhZGVyLCAidGVzdCBvYmplY3QgdGhyb3dFeGNlcHRpb24gU1VDQ0VTUyIpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29s
IHRlc3RIYXNQcm9wZXJ0eShOUE9iamVjdCosIE5QSWRlbnRpZmllciBuYW1lKQogewogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBOVU1fVEVTVF9JREVOVElGSUVSUzsgaSsrKSB7CiAgICAg
ICAgIGlmICh0ZXN0SWRlbnRpZmllcnNbaV0gPT0gbmFtZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26731</attachid>
            <date>2009-01-14 14:15:56 -0800</date>
            <delta_ts>2009-01-14 14:16:56 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>np_setexception.patch</filename>
            <type>text/plain</type>
            <size>13995</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDI2OTQ3ZTc3NGRkNWEzNjFiMjI1MGFlZmFlYjcxM2I4ZDllZDA1ODcKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIFdlZCBKYW4gMTQg
MTQ6MTQ6NDQgMjAwOSAtMDgwMAoKICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY4Mjk+CiAgICAKICAgIEltcGxlbWVudCBOUE5fU2V0RXhjZXB0aW9uKCkKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMjc1MjZhMy4uOTI3ZThjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDA5LTAxLTE0
ICBKZXJlbXkgTW9za292aWNoICA8amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2ODI5PgorICAgICAgICBJbXBsZW1lbnQgTlBOX1NldEV4Y2Vw
dGlvbigpCisKKyAgICAgICAgKiBwbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvbmV0c2NhcGUtdGhyb3ctZXhjZXB0
aW9uLmh0bWw6IEFkZGVkLgorCiAyMDA5LTAxLTEzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmViNzYxZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtdGhyb3ctZXhj
ZXB0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKyBUaGlzIHRlc3RzIHRoYXQgYSBw
bHVnaW4gY2FuIHRocm93IGV4Y2VwdGlvbnMuIElmIHRoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIHRo
ZSB0ZXh0ICJTVUNDRVNTIiB0d2ljZSBiZWxvdy4KK3BsdWdpbiBvYmplY3QgdGVzdFRocm93RXhj
ZXB0aW9uIFNVQ0NFU1MKK3Rlc3Qgb2JqZWN0IHRocm93RXhjZXB0aW9uIFNVQ0NFU1MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtdGhyb3ctZXhjZXB0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNzVkZTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbHVnaW5zL25ldHNjYXBlLXRocm93LWV4Y2VwdGlvbi5odG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzxodG1sPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBwbHVnaW4gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdFBsdWdpbiIpOworICAgIHZhciByZXN1bHQxID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdDEnKTsKKyAgICB0cnkgeworICAgICAgICBwbHVnaW4udGVzdFRocm93
RXhjZXB0aW9uKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXN1bHQxLmlubmVySFRN
TCA9IGUubWVzc2FnZTsKKyAgICB9CisgICAgdmFyIHJlc3VsdDIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0MicpOworICAgIHRyeSB7CisgICAgICAgIHBsdWdpbi50ZXN0T2JqZWN0
LnRocm93RXhjZXB0aW9uKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXN1bHQyLmlu
bmVySFRNTCA9IGUubWVzc2FnZTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCk7Ij4KKzxlbWJlZCBpZD0idGVzdFBsdWdpbiIgdHlwZT0iYXBwbGljYXRpb24v
eC13ZWJraXQtdGVzdC1uZXRzY2FwZSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjwvZW1iZWQ+
CitUaGlzIHRlc3RzIHRoYXQgYSBwbHVnaW4gY2FuIHRocm93IGV4Y2VwdGlvbnMuIElmIHRoaXMg
dGVzdCBpcyBzdWNjZXNzZnVsIHRoZSB0ZXh0ICJTVUNDRVNTIiB0d2ljZSBiZWxvdy4KKzxkaXYg
aWQ9InJlc3VsdDEiPkZBSUxVUkU8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdDIiPkZBSUxVUkU8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMmE2Nzg1OC4uYzNmOTc0NCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAw
OS0wMS0xNCAgSmVyZW15IE1vc2tvdmljaCAgPGplcmVteUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyOT4KKyAgICAgICAgSW1wbGVtZW50IE5QTl9T
ZXRFeGNlcHRpb24oKQorCisgICAgICAgIFRoaXMgbWlycm9ycyB0aGUgaW1wbGVtZW50YXRpb24g
aW4gdGhlIG9iai1jIGJpbmRpbmdzLgorCisgICAgICAgIFRlc3Q6IHBsdWdpbnMvbmV0c2NhcGUt
dGhyb3ctZXhjZXB0aW9uLmh0bWwKKworICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6
CisgICAgICAgIChfTlBOX1NldEV4Y2VwdGlvbik6CisgICAgICAgICogYnJpZGdlL2MvY19pbnN0
YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpnZXRFeGNlcHRpb25TdHJpbmcpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24pOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9F
eGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjppbnZva2VNZXRo
b2QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0
aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6Z2V0UHJvcGVydHlOYW1lcyk6
CisgICAgICAgICogYnJpZGdlL2MvY19pbnN0YW5jZS5oOgorCiAyMDA5LTAxLTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAg
Yi9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggNzQzNDE0YS4uYzcyMjA4ZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1dlYkNvcmUv
YnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJjX3V0aWxpdHkuaCIKKyNpbmNsdWRlICJjX2luc3RhbmNlLmgiCiAjaW5jbHVkZSAibnBydW50
aW1lX2ltcGwuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfcHJpdi5oIgogI2luY2x1ZGUgInJ1bnRp
bWVfcm9vdC5oIgpAQCAtMzc1LDExICszNzYsMTEgQEAgYm9vbCBfTlBOX0hhc01ldGhvZChOUFAs
IE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgX05QTl9TZXRFeGNlcHRpb24oTlBPYmplY3QqLCBjb25zdCBOUFVURjgqKQor
dm9pZCBfTlBOX1NldEV4Y2VwdGlvbihOUE9iamVjdCosIGNvbnN0IE5QVVRGOCogbWVzc2FnZSkK
IHsKLSAgICAvLyBGSVhNRToKLSAgICAvLyBCdWcgMTk4ODg6IEltcGxlbWVudCBfTlBOX1NldEV4
Y2VwdGlvbigpIGNvcnJlY3RseQotICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4ODg+CisgICAgLy8gSWdub3JuaW5nIHRoZSBOUE9iamVjdCBwYXJhbSBp
cyBjb25zaXN0ZW50IHdpdGggdGhlIE1vemlsbGEgaW1wbGVtZW50YXRpb24uCisgICAgVVN0cmlu
ZyBleGNlcHRpb24obWVzc2FnZSk7CisgICAgQ0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24o
ZXhjZXB0aW9uKTsKIH0KIAogYm9vbCBfTlBOX0VudW1lcmF0ZShOUFAsIE5QT2JqZWN0KiBvLCBO
UElkZW50aWZpZXIqKiBpZGVudGlmaWVyLCB1aW50MzJfdCogY291bnQpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwIGIvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3Rh
bmNlLmNwcAppbmRleCAzN2MzZGQ4Li5kMjI5Yzc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRn
ZS9jL2NfaW5zdGFuY2UuY3BwCisrKyBiL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAK
QEAgLTM1LDE3ICszNSw0NSBAQAogI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVk
ZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSA8cnVudGltZS9BcmdMaXN0Lmg+CisjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU051bWJlckNl
bGwuaD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewogCit1c2luZyBKU0M6OlVTdHJpbmc7CisK
K0pTQzo6VVN0cmluZyYgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEpTQzo6VVN0cmluZywgZXhjZXB0aW9uU3RyLCAoKSk7CisgICAgcmV0dXJuIGV4
Y2VwdGlvblN0cjsKK30KKwordm9pZCBDSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlvbihVU3Ry
aW5nIGV4Y2VwdGlvbikKK3sKKyAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IGV4Y2VwdGlv
bjsKK30KKwordm9pZCBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGdsb2JhbEV4Y2VwdGlvblN0cmluZygpLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB7CisgICAgICAgIEpTTG9jayBsb2NrKGZhbHNl
KTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3IsIGdsb2JhbEV4Y2VwdGlv
blN0cmluZygpKTsKKyAgICB9CisKKyAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IFVTdHJp
bmcoKTsKK30KKwogQ0luc3RhbmNlOjpDSW5zdGFuY2UoTlBPYmplY3QqIG8sIFBhc3NSZWZQdHI8
Um9vdE9iamVjdD4gcm9vdE9iamVjdCkKICAgICA6IEluc3RhbmNlKHJvb3RPYmplY3QpCiB7CkBA
IC05NSw3ICsxMjMsOSBAQCBKU1ZhbHVlUHRyIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgTWV0aG9kTGlzdCYgbWV0aG9kTGlzdAogCiAgICAgewogICAgICAg
ICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAgICBBU1NF
UlQoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxsKCkpOwogICAgICAgICBfb2JqZWN0LT5f
Y2xhc3MtPmludm9rZShfb2JqZWN0LCBpZGVudCwgY0FyZ3MuZGF0YSgpLCBjb3VudCwgJnJlc3Vs
dFZhcmlhbnQpOworICAgICAgICBtb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoZXhlYyk7
CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCkBAIC0xMjQsOSArMTU0
LDExIEBAIEpTVmFsdWVQdHIgQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKICAgICBWT0lEX1RPX05QVkFSSUFOVChyZXN1
bHRWYXJpYW50KTsKICAgICB7CiAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcyhmYWxzZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxFeGNlcHRpb25TdHJpbmcoKS5pc051
bGwoKSk7CiAgICAgICAgIF9vYmplY3QtPl9jbGFzcy0+aW52b2tlRGVmYXVsdChfb2JqZWN0LCBj
QXJncy5kYXRhKCksIGNvdW50LCAmcmVzdWx0VmFyaWFudCk7CisgICAgICAgIG1vdmVHbG9iYWxF
eGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKICAgICB9Ci0gICAgCisKICAgICBmb3IgKGkgPSAw
OyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlKCZjQXJn
c1tpXSk7CiAKQEAgLTE1Nyw5ICsxODksMTEgQEAgSlNWYWx1ZVB0ciBDSW5zdGFuY2U6Omludm9r
ZUNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiAgICAgVk9J
RF9UT19OUFZBUklBTlQocmVzdWx0VmFyaWFudCk7CiAgICAgewogICAgICAgICBKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZmFsc2UpOworICAgICAgICBBU1NFUlQoZ2xvYmFsRXhj
ZXB0aW9uU3RyaW5nKCkuaXNOdWxsKCkpOwogICAgICAgICBfb2JqZWN0LT5fY2xhc3MtPmNvbnN0
cnVjdChfb2JqZWN0LCBjQXJncy5kYXRhKCksIGNvdW50LCAmcmVzdWx0VmFyaWFudCk7CisgICAg
ICAgIG1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShleGVjKTsKICAgICB9Ci0gICAgCisK
ICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgX05QTl9SZWxlYXNlVmFy
aWFudFZhbHVlKCZjQXJnc1tpXSk7CiAKQEAgLTIxMSw3ICsyNDUsMTAgQEAgdm9pZCBDSW5zdGFu
Y2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
bmFtZUFycmF5KQogCiAgICAgewogICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxs
TG9ja3MoZmFsc2UpOwotICAgICAgICBpZiAoIV9vYmplY3QtPl9jbGFzcy0+ZW51bWVyYXRlKF9v
YmplY3QsICZpZGVudGlmaWVycywgJmNvdW50KSkKKyAgICAgICAgQVNTRVJUKGdsb2JhbEV4Y2Vw
dGlvblN0cmluZygpLmlzTnVsbCgpKTsKKyAgICAgICAgYm9vbCBvayA9IF9vYmplY3QtPl9jbGFz
cy0+ZW51bWVyYXRlKF9vYmplY3QsICZpZGVudGlmaWVycywgJmNvdW50KTsKKyAgICAgICAgbW92
ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKGV4ZWMpOworICAgICAgICBpZiAoIW9rKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2UvYy9j
X2luc3RhbmNlLmggYi9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAppbmRleCBiMTY5NDNh
Li5lNGI5MmM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAorKysg
Yi9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaApAQCAtMzYsNiArMzYsOCBAQCB0eXBlZGVm
IHN0cnVjdCBOUE9iamVjdCBOUE9iamVjdDsKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVT
dHJpbmc7CisKIG5hbWVzcGFjZSBCaW5kaW5ncyB7CiAKIGNsYXNzIENDbGFzczsKQEAgLTQ2LDE3
ICs0OCwyMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENJ
bnN0YW5jZShvYmplY3QsIHJvb3RPYmplY3QpKTsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBz
ZXRHbG9iYWxFeGNlcHRpb24oSlNDOjpVU3RyaW5nIGV4Y2VwdGlvbik7CisKICAgICB+Q0luc3Rh
bmNlICgpOwotICAgIAorCiAgICAgdmlydHVhbCBDbGFzcyAqZ2V0Q2xhc3MoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgSlNWYWx1ZVB0ciB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZp
cnR1YWwgSlNWYWx1ZVB0ciBkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0
aXZlVHlwZSkgY29uc3Q7Ci0gICAgCisKICAgICB2aXJ0dWFsIEpTVmFsdWVQdHIgaW52b2tlTWV0
aG9kKEV4ZWNTdGF0ZSosIGNvbnN0IE1ldGhvZExpc3QmLCBjb25zdCBBcmdMaXN0Jik7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgSlNWYWx1ZVB0ciBpbnZva2VEZWZhdWx0TWV0aG9kKEV4ZWNTdGF0ZSosIGNvbnN0IEFy
Z0xpc3QmKTsKLSAgICAKKwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cnVjdCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgSlNWYWx1ZVB0ciBpbnZva2VDb25zdHJ1Y3QoRXhlY1N0YXRlKiwg
Y29uc3QgQXJnTGlzdCYpOwogCkBAIC02NSwxNCArNzAsMTUgQEAgcHVibGljOgogICAgIEpTVmFs
dWVQdHIgc3RyaW5nVmFsdWUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgSlNWYWx1ZVB0ciBudW1i
ZXJWYWx1ZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICBKU1ZhbHVlUHRyIGJvb2xlYW5WYWx1ZSgp
IGNvbnN0OwotICAgIAorCiAgICAgTlBPYmplY3QgKmdldE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IF9vYmplY3Q7IH0KIAogICAgIHZpcnR1YWwgQmluZGluZ0xhbmd1YWdlIGdldEJpbmRpbmdMYW5n
dWFnZSgpIGNvbnN0IHsgcmV0dXJuIENMYW5ndWFnZTsgfQogCiBwcml2YXRlOgorICAgIHN0YXRp
YyB2b2lkIG1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpOwog
ICAgIENJbnN0YW5jZShOUE9iamVjdCosIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4pOwotICAgIAor
CiAgICAgbXV0YWJsZSBDQ2xhc3MgKl9jbGFzczsKICAgICBOUE9iamVjdCAqX29iamVjdDsKIH07
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKaW5kZXggMmEzMzIxYi4uMGNkZGE1MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTAx
LTE0ICBKZXJlbXkgTW9za292aWNoICA8amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODI5PgorICAgICAgICBJbXBsZW1lbnQgTlBOX1NldEV4
Y2VwdGlvbigpCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4u
c3VicHJvai9QbHVnaW5PYmplY3QuY3BwOgorICAgICAgICAocGx1Z2luSW52b2tlKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJvai9UZXN0T2JqZWN0
LmNwcDoKKyAgICAgICAgKGluaXRpYWxpemVJZGVudGlmaWVycyk6CisgICAgICAgICh0ZXN0SGFz
TWV0aG9kKToKKyAgICAgICAgKHRlc3RJbnZva2UpOgorCiAyMDA5LTAxLTEzICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2Fw
ZVBsdWdJbi5zdWJwcm9qL1BsdWdpbk9iamVjdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJvai9QbHVnaW5PYmplY3QuY3BwCmluZGV4IDg4
MTgyNGEuLjkxODA5ODMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3ROZXRzY2FwZVBsdWdJbi5zdWJwcm9qL1BsdWdpbk9iamVjdC5jcHAKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luLnN1YnByb2ovUGx1Z2luT2JqZWN0
LmNwcApAQCAtOTgsNyArOTgsOCBAQCBzdGF0aWMgY29uc3QgTlBVVEY4ICpwbHVnaW5Qcm9wZXJ0
eUlkZW50aWZpZXJOYW1lc1tOVU1fUFJPUEVSVFlfSURFTlRJRklFUlNdID0gewogI2RlZmluZSBJ
RF9URVNUX0lERU5USUZJRVJfVE9fSU5UICAgMTMKICNkZWZpbmUgSURfVEVTVF9QT1NUVVJMX0ZJ
TEUgICAgICAgIDE0CiAjZGVmaW5lIElEX1RFU1RfQ09OU1RSVUNUICAgICAgICAgICAxNQotI2Rl
ZmluZSBOVU1fTUVUSE9EX0lERU5USUZJRVJTICAgICAgMTYKKyNkZWZpbmUgSURfVEVTVF9USFJP
V19FWENFUFRJT05fTUVUSE9EIDE2CisjZGVmaW5lIE5VTV9NRVRIT0RfSURFTlRJRklFUlMgICAg
ICAxNwogCiBzdGF0aWMgTlBJZGVudGlmaWVyIHBsdWdpbk1ldGhvZElkZW50aWZpZXJzW05VTV9N
RVRIT0RfSURFTlRJRklFUlNdOwogc3RhdGljIGNvbnN0IE5QVVRGOCAqcGx1Z2luTWV0aG9kSWRl
bnRpZmllck5hbWVzW05VTV9NRVRIT0RfSURFTlRJRklFUlNdID0gewpAQCAtMTE4LDYgKzExOSw3
IEBAIHN0YXRpYyBjb25zdCBOUFVURjggKnBsdWdpbk1ldGhvZElkZW50aWZpZXJOYW1lc1tOVU1f
TUVUSE9EX0lERU5USUZJRVJTXSA9IHsKICAgICAidGVzdElkZW50aWZpZXJUb0ludCIsCiAgICAg
InRlc3RQb3N0VVJMRmlsZSIsCiAgICAgInRlc3RDb25zdHJ1Y3QiLAorICAgICJ0ZXN0VGhyb3dF
eGNlcHRpb24iLAogfTsKIAogc3RhdGljIE5QVVRGOCogY3JlYXRlQ1N0cmluZ0Zyb21OUFZhcmlh
bnQoY29uc3QgTlBWYXJpYW50KiB2YXJpYW50KQpAQCAtNTczLDYgKzU3NSwxMCBAQCBzdGF0aWMg
Ym9vbCBwbHVnaW5JbnZva2UoTlBPYmplY3QqIGhlYWRlciwgTlBJZGVudGlmaWVyIG5hbWUsIGNv
bnN0IE5QVmFyaWFudCogYQogICAgICAgICByZXR1cm4gdGVzdFBvc3RVUkxGaWxlKHBsdWdpbiwg
YXJncywgYXJnQ291bnQsIHJlc3VsdCk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBwbHVnaW5NZXRo
b2RJZGVudGlmaWVyc1tJRF9URVNUX0NPTlNUUlVDVF0pCiAgICAgICAgIHJldHVybiB0ZXN0Q29u
c3RydWN0KHBsdWdpbiwgYXJncywgYXJnQ291bnQsIHJlc3VsdCk7CisgICAgZWxzZSBpZiAobmFt
ZSA9PSBwbHVnaW5NZXRob2RJZGVudGlmaWVyc1tJRF9URVNUX1RIUk9XX0VYQ0VQVElPTl9NRVRI
T0RdKSB7CisgICAgICAgIGJyb3dzZXItPnNldGV4Y2VwdGlvbihoZWFkZXIsICJwbHVnaW4gb2Jq
ZWN0IHRlc3RUaHJvd0V4Y2VwdGlvbiBTVUNDRVNTIik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4uc3VicHJvai9UZXN0T2JqZWN0LmNw
cCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi5zdWJwcm9q
L1Rlc3RPYmplY3QuY3BwCmluZGV4IDRjZDk0MDIuLjFlNTFlY2UgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi5zdWJwcm9qL1Rlc3RPYmpl
Y3QuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJ
bi5zdWJwcm9qL1Rlc3RPYmplY3QuY3BwCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSA8c3Rk
bGliLmg+CiAKIHN0YXRpYyBib29sIHRlc3RFbnVtZXJhdGUoTlBPYmplY3QgKm5wb2JqLCBOUElk
ZW50aWZpZXIgKip2YWx1ZSwgdWludDMyX3QgKmNvdW50KTsKLXN0YXRpYyBib29sIHRlc3RIYXNQ
cm9wZXJ0eShOUE9iamVjdCAqb2JqLCBOUElkZW50aWZpZXIgbmFtZSk7CitzdGF0aWMgYm9vbCB0
ZXN0SGFzTWV0aG9kKE5QT2JqZWN0KiwgTlBJZGVudGlmaWVyIG5hbWUpOworc3RhdGljIGJvb2wg
dGVzdEludm9rZShOUE9iamVjdCosIE5QSWRlbnRpZmllciBuYW1lLCBjb25zdCBOUFZhcmlhbnQq
IGFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZhcmlhbnQqIHJlc3VsdCk7CitzdGF0aWMgYm9v
bCB0ZXN0SGFzUHJvcGVydHkoTlBPYmplY3QqLCBOUElkZW50aWZpZXIgbmFtZSk7CiBzdGF0aWMg
Ym9vbCB0ZXN0R2V0UHJvcGVydHkoTlBPYmplY3QqLCBOUElkZW50aWZpZXIgbmFtZSwgTlBWYXJp
YW50Kik7CiBzdGF0aWMgTlBPYmplY3QgKnRlc3RBbGxvY2F0ZShOUFAgbnBwLCBOUENsYXNzICp0
aGVDbGFzcyk7CiBzdGF0aWMgdm9pZCB0ZXN0RGVhbGxvY2F0ZShOUE9iamVjdCAqb2JqKTsKQEAg
LTQxLDggKzQzLDggQEAgc3RhdGljIE5QQ2xhc3MgdGVzdENsYXNzID0gewogICAgIHRlc3RBbGxv
Y2F0ZSwgCiAgICAgdGVzdERlYWxsb2NhdGUsIAogICAgIDAsCi0gICAgMCwKLSAgICAwLAorICAg
IHRlc3RIYXNNZXRob2QsCisgICAgdGVzdEludm9rZSwKICAgICAwLAogICAgIHRlc3RIYXNQcm9w
ZXJ0eSwKICAgICB0ZXN0R2V0UHJvcGVydHksCkBAIC03MSw5ICs3MywxOCBAQCBzdGF0aWMgY29u
c3QgTlBVVEY4ICp0ZXN0SWRlbnRpZmllck5hbWVzW05VTV9URVNUX0lERU5USUZJRVJTXSA9IHsK
ICAgICAib2JqZWN0UG9pbnRlciIsCiB9OwogCisjZGVmaW5lIElEX1RIUk9XX0VYQ0VQVElPTl9N
RVRIT0QgICAwCisjZGVmaW5lIE5VTV9NRVRIT0RfSURFTlRJRklFUlMgICAgICAxCisKK3N0YXRp
YyBOUElkZW50aWZpZXIgdGVzdE1ldGhvZElkZW50aWZpZXJzW05VTV9NRVRIT0RfSURFTlRJRklF
UlNdOworc3RhdGljIGNvbnN0IE5QVVRGOCAqdGVzdE1ldGhvZElkZW50aWZpZXJOYW1lc1tOVU1f
TUVUSE9EX0lERU5USUZJRVJTXSA9IHsKKyAgICAidGhyb3dFeGNlcHRpb24iLAorfTsKKwogc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZUlkZW50aWZpZXJzKHZvaWQpCiB7CiAgICAgYnJvd3Nlci0+Z2V0
c3RyaW5naWRlbnRpZmllcnModGVzdElkZW50aWZpZXJOYW1lcywgTlVNX1RFU1RfSURFTlRJRklF
UlMsIHRlc3RJZGVudGlmaWVycyk7CisgICAgYnJvd3Nlci0+Z2V0c3RyaW5naWRlbnRpZmllcnMo
dGVzdE1ldGhvZElkZW50aWZpZXJOYW1lcywgTlVNX01FVEhPRF9JREVOVElGSUVSUywgdGVzdE1l
dGhvZElkZW50aWZpZXJzKTsKIH0KIAogc3RhdGljIE5QT2JqZWN0ICp0ZXN0QWxsb2NhdGUoTlBQ
IG5wcCwgTlBDbGFzcyAqdGhlQ2xhc3MpCkBAIC05Myw3ICsxMDQsMjUgQEAgc3RhdGljIHZvaWQg
dGVzdERlYWxsb2NhdGUoTlBPYmplY3QgKm9iaikKICAgICBmcmVlKG9iaik7CiB9CiAKLXN0YXRp
YyBib29sIHRlc3RIYXNQcm9wZXJ0eShOUE9iamVjdCAqb2JqLCBOUElkZW50aWZpZXIgbmFtZSkK
K3N0YXRpYyBib29sIHRlc3RIYXNNZXRob2QoTlBPYmplY3QqLCBOUElkZW50aWZpZXIgbmFtZSkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTlVNX01FVEhPRF9JREVOVElGSUVSUzsg
aSsrKSB7CisgICAgICAgIGlmICh0ZXN0TWV0aG9kSWRlbnRpZmllcnNbaV0gPT0gbmFtZSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0
YXRpYyBib29sIHRlc3RJbnZva2UoTlBPYmplY3QqIGhlYWRlciwgTlBJZGVudGlmaWVyIG5hbWUs
IGNvbnN0IE5QVmFyaWFudCogYXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCogcmVz
dWx0KQoreworICAgIGlmIChuYW1lID09IHRlc3RNZXRob2RJZGVudGlmaWVyc1tJRF9USFJPV19F
WENFUFRJT05fTUVUSE9EXSkgeworICAgICAgICBicm93c2VyLT5zZXRleGNlcHRpb24oaGVhZGVy
LCAidGVzdCBvYmplY3QgdGhyb3dFeGNlcHRpb24gU1VDQ0VTUyIpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgfQorICAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIHRlc3RI
YXNQcm9wZXJ0eShOUE9iamVjdCosIE5QSWRlbnRpZmllciBuYW1lKQogewogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBOVU1fVEVTVF9JREVOVElGSUVSUzsgaSsrKSB7CiAgICAgICAgIGlm
ICh0ZXN0SWRlbnRpZmllcnNbaV0gPT0gbmFtZSkK
</data>
<flag name="review"
          id="12742"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>