<?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>54555</bug_id>
          
          <creation_ts>2011-02-16 07:55:36 -0800</creation_ts>
          <short_desc>[V8] SerializedScriptValue should handle JS exceptions</short_desc>
          <delta_ts>2011-02-21 03:51:10 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vitaly Repeshko">vitalyr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antonm</cc>
    
    <cc>mihaip</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>352070</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2011-02-16 07:55:36 -0800</bug_when>
    <thetext>[V8] SerializedScriptValue should handle JS exceptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352072</commentid>
    <comment_count>1</comment_count>
      <attachid>82637</attachid>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2011-02-16 08:01:51 -0800</bug_when>
    <thetext>Created attachment 82637
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352074</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-16 08:05:41 -0800</bug_when>
    <thetext>Attachment 82637 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/bindings/v8/SerializedScriptValue.cpp:493:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/bindings/v8/SerializedScriptValue.cpp:687:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1229:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 3 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352077</commentid>
    <comment_count>3</comment_count>
      <attachid>82638</attachid>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2011-02-16 08:10:01 -0800</bug_when>
    <thetext>Created attachment 82638
patch (style errors fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352115</commentid>
    <comment_count>4</comment_count>
      <attachid>82638</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-02-16 09:01:07 -0800</bug_when>
    <thetext>Comment on attachment 82638
patch (style errors fixed)

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

LGTM

&gt; Source/WebCore/ChangeLog:3
&gt; +        Reviewed by Mihai Parparita.

is it indeed reviewed?

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1240
&gt;          didThrow = true;

shouldn&apos;t you throw some exception then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352120</commentid>
    <comment_count>5</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2011-02-16 09:05:17 -0800</bug_when>
    <thetext>Anton, thanks for the comments!

(In reply to comment #4)
&gt; (From update of attachment 82638 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82638&amp;action=review
&gt; 
&gt; LGTM
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Reviewed by Mihai Parparita.
&gt; 
&gt; is it indeed reviewed?

I hope Mihai can have a look :)

&gt; &gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1240
&gt; &gt;          didThrow = true;
&gt; 
&gt; shouldn&apos;t you throw some exception then?

We don&apos;t know whether it&apos;s safe to re-enter V8 here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352121</commentid>
    <comment_count>6</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-02-16 09:06:26 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Anton, thanks for the comments!
&gt; 
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 82638 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82638&amp;action=review
&gt; &gt; 
&gt; &gt; LGTM
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; &gt; +        Reviewed by Mihai Parparita.
&gt; &gt; 
&gt; &gt; is it indeed reviewed?
&gt; 
&gt; I hope Mihai can have a look :)
&gt; 
&gt; &gt; &gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1240
&gt; &gt; &gt;          didThrow = true;
&gt; &gt; 
&gt; &gt; shouldn&apos;t you throw some exception then?
&gt; 
&gt; We don&apos;t know whether it&apos;s safe to re-enter V8 here.

I think it should be, but I am not insisting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353711</commentid>
    <comment_count>7</comment_count>
      <attachid>82638</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-02-18 11:40:28 -0800</bug_when>
    <thetext>Comment on attachment 82638
patch (style errors fixed)

I&apos;m not 100% comfortable with reviewing this change, since I&apos;m not that familiar with the V8 side of things.

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

&gt; LayoutTests/ChangeLog:3
&gt; +        Reviewed by Mihai Parparita.

Please don&apos;t pre-populate this, webkit-patch land and/or the commit queue will pick up the reviewer based on who set the r+ flag.

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:497
&gt; +                if (m_propertyNames.IsEmpty())

Does this mean that postMessage({}) will report an error now? What was the the rationale for that change (the structured clone argument seems to allow empty objects).

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1236
&gt; +    if (status == Serializer::JSFailure) {

You only seem to use JSFailure for empty inputs, so it seems like throwing an exception should be safe here (assuming empty means empty objects, and that is indeed a situation to avoid).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353808</commentid>
    <comment_count>8</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2011-02-18 13:47:25 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 82638 [details])

Mihai, 
Thanks for having a look!

&gt; I&apos;m not 100% comfortable with reviewing this change, since I&apos;m not that familiar with the V8 side of things.

IIRC, you&apos;re last one who touched this code (making non-trivial changes). I also added Anton who is now an expert in V8 exception handling.

&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82638&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:3
&gt; &gt; +        Reviewed by Mihai Parparita.
&gt; 
&gt; Please don&apos;t pre-populate this, webkit-patch land and/or the commit queue will pick up the reviewer based on who set the r+ flag.

OK.

&gt; &gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:497
&gt; &gt; +                if (m_propertyNames.IsEmpty())
&gt; 
&gt; Does this mean that postMessage({}) will report an error now? What was the the rationale for that change (the structured clone argument seems to allow empty objects).

This is confusing. IsEmpty() applies to the handle here, not to the underlying object. The rationale for the change is that there are corner cases where the V8 API can return an empty handle (to signal something bad has happened) without throwing an exception, i.e. we can&apos;t rely solely on tryCatch.HasCaught(). In these cases the only thing we can do is unwind the C++ stack as it&apos;s not safe to re-enter V8. This doesn&apos;t matter much now because we&apos;ll most likely crash anyway. But the general idea behind this is that if we unwind to the outermost JS frame it may be able to recover and we&apos;ll e.g. disable the JS in the current frame but still can continue running it in the others.

&gt; &gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1236
&gt; &gt; +    if (status == Serializer::JSFailure) {
&gt; 
&gt; You only seem to use JSFailure for empty inputs, so it seems like throwing an exception should be safe here (assuming empty means empty objects, and that is indeed a situation to avoid).

Please see the explanation above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353812</commentid>
    <comment_count>9</comment_count>
      <attachid>82638</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-02-18 13:51:18 -0800</bug_when>
    <thetext>Comment on attachment 82638
patch (style errors fixed)

Thanks for the explanations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354512</commentid>
    <comment_count>10</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2011-02-21 03:51:10 -0800</bug_when>
    <thetext>	M	LayoutTests/ChangeLog
	M	LayoutTests/fast/dom/Window/window-postmessage-clone-expected.txt
	M	LayoutTests/fast/dom/Window/window-postmessage-clone.html
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/bindings/v8/SerializedScriptValue.cpp
Committed r79209</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82637</attachid>
            <date>2011-02-16 08:01:51 -0800</date>
            <delta_ts>2011-02-16 08:10:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>fix_serialized_exceptions.patch</filename>
            <type>text/plain</type>
            <size>12431</size>
            <attacher name="Vitaly Repeshko">vitalyr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNDFjNTJiLi41OTljMzdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDIt
MTYgIFZpdGFseSBSZXBlc2hrbyAgPHZpdGFseXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4KKworICAgICAgICBbVjhdIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTogZml4IEpTIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTU1CisKKyAgICAgICAgQWRkZWQgYW4gZXhj
ZXB0aW9uIHRocm93aW5nIHRlc3QgY2FzZToKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLmh0bWw6CisKIDIwMTEtMDItMTUgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2Vk
OiBpbnNwZWN0b3IgdGVzdHMgZXhwZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9u
ZS1leHBlY3RlZC50eHQKaW5kZXggODAwOTJmMy4uZDJmMDE0OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1j
bG9uZS1leHBlY3RlZC50eHQKQEAgLTIsNiArMiw3IEBAIFRlc3RzIHRoYXQgd2UgY2xvbmUgb2Jq
ZWN0IGhpZXJhcmNoaWVzCiAKIFBBU1M6ICdwb3N0TWVzc2FnZShyZWFsbHlEZWVwQXJyYXkpJyB0
aHJldyBSYW5nZUVycm9yOiBNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4KIFBBU1M6
ICdwb3N0TWVzc2FnZSh3aW5kb3cpJyB0aHJldyBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1M6
ICdwb3N0TWVzc2FnZSgoe2dldCBhKCkgeyB0aHJvdyAieCIgfX0pKScgdGhyZXcgeAogUEFTUzog
ZXZlbnREYXRhIGlzIG51bGwgb2YgdHlwZSBvYmplY3QKIFBBU1M6IGV2ZW50RGF0YSBpcyB1bmRl
ZmluZWQgb2YgdHlwZSB1bmRlZmluZWQKIFBBU1M6IGV2ZW50RGF0YSBpcyAxIG9mIHR5cGUgbnVt
YmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3Rt
ZXNzYWdlLWNsb25lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBv
c3RtZXNzYWdlLWNsb25lLmh0bWwKaW5kZXggOGNkZmQwMS4uZjI4MzUxYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xv
bmUuaHRtbApAQCAtMTg3LDYgKzE4Nyw3IEBAIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyBp
KyspCiAgICAgcmVhbGx5RGVlcEFycmF5PVtyZWFsbHlEZWVwQXJyYXldOwogdHJ5UG9zdE1lc3Nh
Z2UoJ3JlYWxseURlZXBBcnJheScsIHRydWUpOwogdHJ5UG9zdE1lc3NhZ2UoJ3dpbmRvdycsIHRy
dWUpOwordHJ5UG9zdE1lc3NhZ2UoJyh7Z2V0IGEoKSB7IHRocm93ICJ4IiB9fSknLCB0cnVlKTsK
IAogaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgIHZhciBmaWxlSW5wdXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZmlsZUlucHV0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI5YmU3Zi4uYjRk
NjQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAyLTE2ICBWaXRhbHkgUmVw
ZXNoa28gIDx2aXRhbHlyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBNaWhh
aSBQYXJwYXJpdGEuCisKKyAgICAgICAgW1Y4XSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6IGZpeCBK
UyBleGNlcHRpb24gaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDU1NQorCisgICAgICAgIEFkZGVkIGNoZWNrcyBmb3IgZXhjZXB0aW9u
cyBhbmQgZW1wdHkgaGFuZGxlczoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplcjo6U2VyaWFsaXplcik6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplcjo6Y2hlY2tFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
aWFsaXplcjo6cmVwb3J0RmFpbHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVyOjpB
cnJheVN0YXRlOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXI6OkFic3Ry
YWN0T2JqZWN0U3RhdGU6OkFic3RyYWN0T2JqZWN0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplcjo6QWJzdHJhY3RPYmplY3RTdGF0ZTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVyOjpwdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXI6Omhh
bmRsZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXI6Om5ld09iamVjdFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXI6OmRvU2VyaWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToK
KwogMjAxMS0wMi0xNSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDFjNWU0ZTcuLmVlNmNmYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtNTEsOSArNTEsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0vLyBGSVhNRToKLS8vIC0gY2F0Y2ggVjggZXhj
ZXB0aW9ucwotLy8gLSBjb25zaWRlciBjcmFzaGluZyBpbiBkZWJ1ZyBtb2RlIG9uIGRlc2VyaWFs
aXphdGlvbiBlcnJvcnMKKy8vIEZJWE1FOiBjb25zaWRlciBjcmFzaGluZyBpbiBkZWJ1ZyBtb2Rl
IG9uIGRlc2VyaWFsaXphdGlvbiBlcnJvcnMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0y
MjEsMTQgKzIxOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGRvV3JpdGVVaW50MzIocGl4ZWxEYXRh
TGVuZ3RoKTsKICAgICAgICAgYXBwZW5kKHBpeGVsRGF0YSwgcGl4ZWxEYXRhTGVuZ3RoKTsKICAg
ICB9Ci0gICAgCisKICAgICB2b2lkIHdyaXRlUmVnRXhwKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBw
YXR0ZXJuLCB2ODo6UmVnRXhwOjpGbGFncyBmbGFncykKICAgICB7CiAgICAgICAgIGFwcGVuZChS
ZWdFeHBUYWcpOwogICAgICAgICB2ODo6U3RyaW5nOjpVdGY4VmFsdWUgcGF0dGVyblV0ZjhWYWx1
ZShwYXR0ZXJuKTsKICAgICAgICAgZG9Xcml0ZVN0cmluZygqcGF0dGVyblV0ZjhWYWx1ZSwgcGF0
dGVyblV0ZjhWYWx1ZS5sZW5ndGgoKSk7CiAgICAgICAgIGRvV3JpdGVVaW50MzIoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZsYWdzKSk7Ci0gICAgfSAgICAKKyAgICB9CiAKICAgICB2b2lkIHdyaXRl
QXJyYXkodWludDMyX3QgbGVuZ3RoKQogICAgIHsKQEAgLTMzOSwyNiArMzM3LDQ1IEBAIHByaXZh
dGU6CiBjbGFzcyBTZXJpYWxpemVyIHsKICAgICBjbGFzcyBTdGF0ZUJhc2U7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgU2VyaWFsaXplcihXcml0ZXImIHdyaXRlcikKKyAgICBlbnVtIFN0YXR1cyB7
CisgICAgICAgIFN1Y2Nlc3MsCisgICAgICAgIElucHV0RXJyb3IsCisgICAgICAgIEpTRXhjZXB0
aW9uLAorICAgICAgICBKU0ZhaWx1cmUKKyAgICB9OworCisgICAgU2VyaWFsaXplcihXcml0ZXIm
IHdyaXRlciwgdjg6OlRyeUNhdGNoJiB0cnlDYXRjaCkKICAgICAgICAgOiBtX3dyaXRlcih3cml0
ZXIpCisgICAgICAgICwgbV90cnlDYXRjaCh0cnlDYXRjaCkKICAgICAgICAgLCBtX2RlcHRoKDAp
Ci0gICAgICAgICwgbV9oYXNFcnJvcihmYWxzZSkKKyAgICAgICAgLCBtX3N0YXR1cyhTdWNjZXNz
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKCF0cnlDYXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgfQog
Ci0gICAgYm9vbCBzZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQorICAgIFN0
YXR1cyBzZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogICAgIHsKICAgICAg
ICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgICAgICBTdGF0ZUJhc2UqIHN0YXRlID0gZG9T
ZXJpYWxpemUodmFsdWUsIDApOwogICAgICAgICB3aGlsZSAoc3RhdGUpCiAgICAgICAgICAgICBz
dGF0ZSA9IHN0YXRlLT5hZHZhbmNlKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICFtX2hhc0Vycm9y
OworICAgICAgICByZXR1cm4gbV9zdGF0dXM7CiAgICAgfQogCiAgICAgLy8gRnVuY3Rpb25zIHVz
ZWQgYnkgc2VyaWFsaXphdGlvbiBzdGF0ZXMuCiAKICAgICBTdGF0ZUJhc2UqIGRvU2VyaWFsaXpl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU3RhdGVCYXNlKiBuZXh0KTsKIAorICAgIFN0
YXRlQmFzZSogY2hlY2tFeGNlcHRpb24oU3RhdGVCYXNlKiBzdGF0ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3RyeUNhdGNoLkhhc0NhdWdodCgpID8gaGFuZGxlRXJyb3IoSlNFeGNlcHRpb24s
IHN0YXRlKSA6IDA7CisgICAgfQorCisgICAgU3RhdGVCYXNlKiByZXBvcnRGYWlsdXJlKFN0YXRl
QmFzZSogc3RhdGUpCisgICAgeworICAgICAgICByZXR1cm4gaGFuZGxlRXJyb3IoSlNGYWlsdXJl
LCBzdGF0ZSk7CisgICAgfQorCiAgICAgU3RhdGVCYXNlKiB3cml0ZUFycmF5KHVpbnQzMl90IGxl
bmd0aCwgU3RhdGVCYXNlKiBzdGF0ZSkKICAgICB7CiAgICAgICAgIG1fd3JpdGVyLndyaXRlQXJy
YXkobGVuZ3RoKTsKQEAgLTQ0Nyw3ICs0NjQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAg
ICAgICAgICAgKyttX2luZGV4OwogICAgICAgICAgICAgZm9yICg7IG1faW5kZXggPCBjb21wb3Np
dGUoKS0+TGVuZ3RoKCk7ICsrbV9pbmRleCkgewotICAgICAgICAgICAgICAgIGlmIChTdGF0ZUJh
c2UqIG5ld1N0YXRlID0gc2VyaWFsaXplci5kb1NlcmlhbGl6ZShjb21wb3NpdGUoKS0+R2V0KG1f
aW5kZXgpLCB0aGlzKSkKKyAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUgPSBjb21wb3NpdGUoKS0+R2V0KG1faW5kZXgpOworICAgICAgICAgICAgICAgIGlmIChTdGF0
ZUJhc2UqIG5ld1N0YXRlID0gc2VyaWFsaXplci5jaGVja0V4Y2VwdGlvbih0aGlzKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ld1N0YXRlOworICAgICAgICAgICAgICAgIGlmIChTdGF0
ZUJhc2UqIG5ld1N0YXRlID0gc2VyaWFsaXplci5kb1NlcmlhbGl6ZSh2YWx1ZSwgdGhpcykpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdTdGF0ZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiBzZXJpYWxpemVyLndyaXRlQXJyYXkoY29tcG9zaXRlKCktPkxlbmd0aCgp
LCB0aGlzKTsKQEAgLTQ2Miw4ICs0ODIsNyBAQCBwcml2YXRlOgogICAgIHB1YmxpYzoKICAgICAg
ICAgQWJzdHJhY3RPYmplY3RTdGF0ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgU3Rh
dGVCYXNlKiBuZXh0KQogICAgICAgICAgICAgOiBTdGF0ZTx2ODo6T2JqZWN0PihvYmplY3QsIG5l
eHQpCi0gICAgICAgICAgICAsIG1fcHJvcGVydHlOYW1lcyhvYmplY3QtPkdldFByb3BlcnR5TmFt
ZXMoKSkKLSAgICAgICAgICAgICwgbV9pbmRleCgtMSkKKyAgICAgICAgICAgICwgbV9pbmRleCgw
KQogICAgICAgICAgICAgLCBtX251bVNlcmlhbGl6ZWRQcm9wZXJ0aWVzKDApCiAgICAgICAgICAg
ICAsIG1fbmFtZURvbmUoZmFsc2UpCiAgICAgICAgIHsKQEAgLTQ3MSwxNSArNDkwLDMyIEBAIHBy
aXZhdGU6CiAKICAgICAgICAgdmlydHVhbCBTdGF0ZUJhc2UqIGFkdmFuY2UoU2VyaWFsaXplciYg
c2VyaWFsaXplcikKICAgICAgICAgewotICAgICAgICAgICAgKyttX2luZGV4OwotICAgICAgICAg
ICAgZm9yICg7IG1faW5kZXggPCBtX3Byb3BlcnR5TmFtZXMtPkxlbmd0aCgpOyArK21faW5kZXgp
IHsKLSAgICAgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eU5hbWUuSXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBpZiAobV9pbmRleCA9PSAwKSB7CisgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5h
bWVzID0gY29tcG9zaXRlKCktPkdldFByb3BlcnR5TmFtZXMoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoU3RhdGVCYXNlKiBuZXdTdGF0ZSA9IHNlcmlhbGl6ZXIuY2hlY2tFeGNlcHRpb24odGhpcykp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdTdGF0ZTsKKyAgICAgICAgICAgICAgICBp
ZiAobV9wcm9wZXJ0eU5hbWVzLklzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHNlcmlhbGl6ZXIucmVwb3J0RmFpbHVyZSh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHdoaWxlIChtX2luZGV4IDwgbV9wcm9wZXJ0eU5hbWVzLT5MZW5ndGgoKSkgeworICAgICAg
ICAgICAgICAgIGlmICghbV9uYW1lRG9uZSkgewogICAgICAgICAgICAgICAgICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiBwcm9wZXJ0eU5hbWUgPSBtX3Byb3BlcnR5TmFtZXMtPkdldChtX2luZGV4
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9wZXJ0eU5hbWUtPklzU3RyaW5nKCkgJiYg
Y29tcG9zaXRlKCktPkhhc1JlYWxOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZS5Bczx2ODo6U3Ry
aW5nPigpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwcm9wZXJ0eU5hbWUtPklzVWlu
dDMyKCkgJiYgY29tcG9zaXRlKCktPkhhc1JlYWxJbmRleGVkUHJvcGVydHkocHJvcGVydHlOYW1l
LT5VaW50MzJWYWx1ZSgpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFN0YXRlQmFzZSog
bmV3U3RhdGUgPSBzZXJpYWxpemVyLmNoZWNrRXhjZXB0aW9uKHRoaXMpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5ld1N0YXRlOworICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cGVydHlOYW1lLklzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXJp
YWxpemVyLnJlcG9ydEZhaWx1cmUodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFz
U3RyaW5nUHJvcGVydHkgPSBwcm9wZXJ0eU5hbWUtPklzU3RyaW5nKCkgJiYgY29tcG9zaXRlKCkt
Pkhhc1JlYWxOYW1lZFByb3BlcnR5KHByb3BlcnR5TmFtZS5Bczx2ODo6U3RyaW5nPigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKFN0YXRlQmFzZSogbmV3U3RhdGUgPSBzZXJpYWxpemVyLmNo
ZWNrRXhjZXB0aW9uKHRoaXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1N0
YXRlOworICAgICAgICAgICAgICAgICAgICBib29sIGhhc0luZGV4ZWRQcm9wZXJ0eSA9ICFoYXNT
dHJpbmdQcm9wZXJ0eSAmJiBwcm9wZXJ0eU5hbWUtPklzVWludDMyKCkgJiYgY29tcG9zaXRlKCkt
Pkhhc1JlYWxJbmRleGVkUHJvcGVydHkocHJvcGVydHlOYW1lLT5VaW50MzJWYWx1ZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKFN0YXRlQmFzZSogbmV3U3RhdGUgPSBzZXJpYWxpemVyLmNo
ZWNrRXhjZXB0aW9uKHRoaXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1N0
YXRlOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzU3RyaW5nUHJvcGVydHkgfHwgaGFzSW5k
ZXhlZFByb3BlcnR5KQogICAgICAgICAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWUgPSBw
cm9wZXJ0eU5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbV9pbmRleDsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wcm9wZXJ0eU5hbWUuSXNFbXB0
eSgpKTsKICAgICAgICAgICAgICAgICBpZiAoIW1fbmFtZURvbmUpIHsKQEAgLTQ4OCw4ICs1MjQs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdTdGF0ZTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUgPSBjb21wb3NpdGUoKS0+R2V0KG1fcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAg
ICBpZiAoU3RhdGVCYXNlKiBuZXdTdGF0ZSA9IHNlcmlhbGl6ZXIuY2hlY2tFeGNlcHRpb24odGhp
cykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdTdGF0ZTsKICAgICAgICAgICAgICAg
ICBtX25hbWVEb25lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgbV9wcm9wZXJ0eU5hbWUuQ2xl
YXIoKTsKKyAgICAgICAgICAgICAgICArK21faW5kZXg7CiAgICAgICAgICAgICAgICAgKyttX251
bVNlcmlhbGl6ZWRQcm9wZXJ0aWVzOwogICAgICAgICAgICAgICAgIGlmIChTdGF0ZUJhc2UqIG5l
d1N0YXRlID0gc2VyaWFsaXplci5kb1NlcmlhbGl6ZSh2YWx1ZSwgdGhpcykpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXdTdGF0ZTsKQEAgLTU0MCw3ICs1NzksNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgQVNTRVJUKHN0YXRlKTsKICAgICAgICAgKyttX2RlcHRoOwotICAgICAg
ICByZXR1cm4gY2hlY2tDb21wb3NpdGUoc3RhdGUpID8gc3RhdGUgOiBoYW5kbGVFcnJvcihzdGF0
ZSk7CisgICAgICAgIHJldHVybiBjaGVja0NvbXBvc2l0ZShzdGF0ZSkgPyBzdGF0ZSA6IGhhbmRs
ZUVycm9yKElucHV0RXJyb3IsIHN0YXRlKTsKICAgICB9CiAKICAgICBTdGF0ZUJhc2UqIHBvcChT
dGF0ZUJhc2UqIHN0YXRlKQpAQCAtNTUyLDkgKzU5MSwxMCBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gbmV4dDsKICAgICB9CiAKLSAgICBTdGF0ZUJhc2UqIGhhbmRsZUVycm9yKFN0YXRlQmFz
ZSogc3RhdGUpCisgICAgU3RhdGVCYXNlKiBoYW5kbGVFcnJvcihTdGF0dXMgZXJyb3JTdGF0dXMs
IFN0YXRlQmFzZSogc3RhdGUpCiAgICAgewotICAgICAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKKyAg
ICAgICAgQVNTRVJUKGVycm9yU3RhdHVzICE9IFN1Y2Nlc3MpOworICAgICAgICBtX3N0YXR1cyA9
IGVycm9yU3RhdHVzOwogICAgICAgICB3aGlsZSAoc3RhdGUpIHsKICAgICAgICAgICAgIFN0YXRl
QmFzZSogdG1wID0gc3RhdGUtPm5leHRTdGF0ZSgpOwogICAgICAgICAgICAgZGVsZXRlIHN0YXRl
OwpAQCAtNjE2LDcgKzY1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURjo6Qnl0ZUFycmF5KiBw
aXhlbEFycmF5ID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKICAgICAgICAgbV93cml0ZXIu
d3JpdGVJbWFnZURhdGEoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdodCgpLCBw
aXhlbEFycmF5LT5kYXRhKCksIHBpeGVsQXJyYXktPmxlbmd0aCgpKTsKICAgICB9Ci0gICAgCisK
ICAgICB2b2lkIHdyaXRlUmVnRXhwKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKICAgICB7
CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlJlZ0V4cD4gcmVnRXhwID0gdmFsdWUuQXM8djg6OlJl
Z0V4cD4oKTsKQEAgLTYzMiwyMCArNjcyLDIxIEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgU3Rh
dGVCYXNlKiBuZXdPYmplY3RTdGF0ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgU3Rh
dGVCYXNlKiBuZXh0KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6Ci0gICAgICAgIC8vIC0gY2hl
Y2sgbm90IGEgd3JhcHBlcgotICAgICAgICAvLyAtIHN1cHBvcnQgRmlsZSwgZXRjLgorICAgICAg
ICAvLyBGSVhNRTogY2hlY2sgbm90IGEgd3JhcHBlcgogICAgICAgICByZXR1cm4gbmV3IE9iamVj
dFN0YXRlKG9iamVjdCwgbmV4dCk7CiAgICAgfQogCiAgICAgV3JpdGVyJiBtX3dyaXRlcjsKKyAg
ICB2ODo6VHJ5Q2F0Y2gmIG1fdHJ5Q2F0Y2g7CiAgICAgaW50IG1fZGVwdGg7Ci0gICAgYm9vbCBt
X2hhc0Vycm9yOworICAgIFN0YXR1cyBtX3N0YXR1czsKIH07CiAKIFNlcmlhbGl6ZXI6OlN0YXRl
QmFzZSogU2VyaWFsaXplcjo6ZG9TZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
LCBTdGF0ZUJhc2UqIG5leHQpCiB7Ci0gICAgaWYgKHZhbHVlLT5Jc1VuZGVmaW5lZCgpKQorICAg
IGlmICh2YWx1ZS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiByZXBvcnRGYWlsdXJlKG5leHQp
OworICAgIGVsc2UgaWYgKHZhbHVlLT5Jc1VuZGVmaW5lZCgpKQogICAgICAgICBtX3dyaXRlci53
cml0ZVVuZGVmaW5lZCgpOwogICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bGwoKSkKICAgICAgICAg
bV93cml0ZXIud3JpdGVOdWxsKCk7CkBAIC04OTAsNyArOTMxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgKnZhbHVlID0gdG9WOChpbWFnZURhdGEucmVsZWFzZSgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCByZWFkUmVnRXhwKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiogdmFsdWUpCiAgICAgewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGF0dGVy
bjsKQEAgLTExNzMsMTIgKzEyMTQsMzIgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJgogewogICAg
IGRpZFRocm93ID0gZmFsc2U7CiAgICAgV3JpdGVyIHdyaXRlcjsKLSAgICBTZXJpYWxpemVyIHNl
cmlhbGl6ZXIod3JpdGVyKTsKLSAgICBpZiAoIXNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKSkg
eworICAgIFNlcmlhbGl6ZXI6OlN0YXR1cyBzdGF0dXM7CisgICAgeworICAgICAgICB2ODo6VHJ5
Q2F0Y2ggdHJ5Q2F0Y2g7CisgICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIsIHRy
eUNhdGNoKTsKKyAgICAgICAgc3RhdHVzID0gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwor
ICAgICAgICBpZiAoc3RhdHVzID09IFNlcmlhbGl6ZXI6OkpTRXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAvLyBJZiB0aGVyZSB3YXMgYSBKUyBleGNlcHRpb24gdGhyb3duLCByZS10aHJvdyBpdC4K
KyAgICAgICAgICAgIGRpZFRocm93ID0gdHJ1ZTsKKyAgICAgICAgICAgIHRyeUNhdGNoLlJlVGhy
b3coKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3Rh
dHVzID09IFNlcmlhbGl6ZXI6OklucHV0RXJyb3IpIHsKKyAgICAgICAgLy8gSWYgdGhlcmUgd2Fz
IGFuIGlucHV0IGVycm9yLCB0aHJvdyBhIG5ldyBleGNlcHRpb24gb3V0c2lkZQorICAgICAgICAv
LyBvZiB0aGUgVHJ5Q2F0Y2ggc2NvcGUuCisgICAgICAgIGRpZFRocm93ID0gdHJ1ZTsKICAgICAg
ICAgdGhyb3dFcnJvcihOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgIHJldHVybjsKKyAgICB9
IGVsc2UgaWYgKHN0YXR1cyA9PSBTZXJpYWxpemVyOjpKU0ZhaWx1cmUpIHsKKyAgICAgICAgLy8g
SWYgdGhlcmUgd2FzIGEgSlMgZmFpbHVyZSAoYnV0IG5vIGV4Y2VwdGlvbiksIHRoZXJlJ3Mgbm90
CisgICAgICAgIC8vIG11Y2ggd2UgY2FuIGRvIGV4Y2VwdCBmb3IgdW53aW5kaW5nIHRoZSBDKysg
c3RhY2sgYnkKKyAgICAgICAgLy8gcHJldGVuZGluZyB0aGVyZSB3YXMgYSBKUyBleGNlcHRpb24u
CiAgICAgICAgIGRpZFRocm93ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBB
U1NFUlQoc3RhdHVzID09IFNlcmlhbGl6ZXI6OlN1Y2Nlc3MpOwogICAgIG1fZGF0YSA9IFN0cmlu
ZyhTdHJpbmdJbXBsOjphZG9wdCh3cml0ZXIuZGF0YSgpKSkuY3Jvc3NUaHJlYWRTdHJpbmcoKTsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82638</attachid>
            <date>2011-02-16 08:10:01 -0800</date>
            <delta_ts>2011-02-18 13:51:18 -0800</delta_ts>
            <desc>patch (style errors fixed)</desc>
            <filename>fix_serialized_exceptions.patch</filename>
            <type>text/plain</type>
            <size>12360</size>
            <attacher name="Vitaly Repeshko">vitalyr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNDFjNTJiLi41OTljMzdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDIt
MTYgIFZpdGFseSBSZXBlc2hrbyAgPHZpdGFseXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4KKworICAgICAgICBbVjhdIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTogZml4IEpTIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTU1CisKKyAgICAgICAgQWRkZWQgYW4gZXhj
ZXB0aW9uIHRocm93aW5nIHRlc3QgY2FzZToKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLmh0bWw6CisKIDIwMTEtMDItMTUgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2Vk
OiBpbnNwZWN0b3IgdGVzdHMgZXhwZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9u
ZS1leHBlY3RlZC50eHQKaW5kZXggODAwOTJmMy4uZDJmMDE0OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1j
bG9uZS1leHBlY3RlZC50eHQKQEAgLTIsNiArMiw3IEBAIFRlc3RzIHRoYXQgd2UgY2xvbmUgb2Jq
ZWN0IGhpZXJhcmNoaWVzCiAKIFBBU1M6ICdwb3N0TWVzc2FnZShyZWFsbHlEZWVwQXJyYXkpJyB0
aHJldyBSYW5nZUVycm9yOiBNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4KIFBBU1M6
ICdwb3N0TWVzc2FnZSh3aW5kb3cpJyB0aHJldyBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK1BBU1M6
ICdwb3N0TWVzc2FnZSgoe2dldCBhKCkgeyB0aHJvdyAieCIgfX0pKScgdGhyZXcgeAogUEFTUzog
ZXZlbnREYXRhIGlzIG51bGwgb2YgdHlwZSBvYmplY3QKIFBBU1M6IGV2ZW50RGF0YSBpcyB1bmRl
ZmluZWQgb2YgdHlwZSB1bmRlZmluZWQKIFBBU1M6IGV2ZW50RGF0YSBpcyAxIG9mIHR5cGUgbnVt
YmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3Rt
ZXNzYWdlLWNsb25lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBv
c3RtZXNzYWdlLWNsb25lLmh0bWwKaW5kZXggOGNkZmQwMS4uZjI4MzUxYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xv
bmUuaHRtbApAQCAtMTg3LDYgKzE4Nyw3IEBAIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyBp
KyspCiAgICAgcmVhbGx5RGVlcEFycmF5PVtyZWFsbHlEZWVwQXJyYXldOwogdHJ5UG9zdE1lc3Nh
Z2UoJ3JlYWxseURlZXBBcnJheScsIHRydWUpOwogdHJ5UG9zdE1lc3NhZ2UoJ3dpbmRvdycsIHRy
dWUpOwordHJ5UG9zdE1lc3NhZ2UoJyh7Z2V0IGEoKSB7IHRocm93ICJ4IiB9fSknLCB0cnVlKTsK
IAogaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewogICAgIHZhciBmaWxlSW5wdXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZmlsZUlucHV0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI5YmU3Zi4uYjRk
NjQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAyLTE2ICBWaXRhbHkgUmVw
ZXNoa28gIDx2aXRhbHlyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBNaWhh
aSBQYXJwYXJpdGEuCisKKyAgICAgICAgW1Y4XSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6IGZpeCBK
UyBleGNlcHRpb24gaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDU1NQorCisgICAgICAgIEFkZGVkIGNoZWNrcyBmb3IgZXhjZXB0aW9u
cyBhbmQgZW1wdHkgaGFuZGxlczoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplcjo6U2VyaWFsaXplcik6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplcjo6Y2hlY2tFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
aWFsaXplcjo6cmVwb3J0RmFpbHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVyOjpB
cnJheVN0YXRlOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXI6OkFic3Ry
YWN0T2JqZWN0U3RhdGU6OkFic3RyYWN0T2JqZWN0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VyaWFsaXplcjo6QWJzdHJhY3RPYmplY3RTdGF0ZTo6YWR2YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVyOjpwdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXI6Omhh
bmRsZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXI6Om5ld09iamVjdFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXI6OmRvU2VyaWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToK
KwogMjAxMS0wMi0xNSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDFjNWU0ZTcuLmM2N2VmNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtNTEsOSArNTEsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0vLyBGSVhNRToKLS8vIC0gY2F0Y2ggVjggZXhj
ZXB0aW9ucwotLy8gLSBjb25zaWRlciBjcmFzaGluZyBpbiBkZWJ1ZyBtb2RlIG9uIGRlc2VyaWFs
aXphdGlvbiBlcnJvcnMKKy8vIEZJWE1FOiBjb25zaWRlciBjcmFzaGluZyBpbiBkZWJ1ZyBtb2Rl
IG9uIGRlc2VyaWFsaXphdGlvbiBlcnJvcnMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0y
MjEsMTQgKzIxOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGRvV3JpdGVVaW50MzIocGl4ZWxEYXRh
TGVuZ3RoKTsKICAgICAgICAgYXBwZW5kKHBpeGVsRGF0YSwgcGl4ZWxEYXRhTGVuZ3RoKTsKICAg
ICB9Ci0gICAgCisKICAgICB2b2lkIHdyaXRlUmVnRXhwKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBw
YXR0ZXJuLCB2ODo6UmVnRXhwOjpGbGFncyBmbGFncykKICAgICB7CiAgICAgICAgIGFwcGVuZChS
ZWdFeHBUYWcpOwogICAgICAgICB2ODo6U3RyaW5nOjpVdGY4VmFsdWUgcGF0dGVyblV0ZjhWYWx1
ZShwYXR0ZXJuKTsKICAgICAgICAgZG9Xcml0ZVN0cmluZygqcGF0dGVyblV0ZjhWYWx1ZSwgcGF0
dGVyblV0ZjhWYWx1ZS5sZW5ndGgoKSk7CiAgICAgICAgIGRvV3JpdGVVaW50MzIoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZsYWdzKSk7Ci0gICAgfSAgICAKKyAgICB9CiAKICAgICB2b2lkIHdyaXRl
QXJyYXkodWludDMyX3QgbGVuZ3RoKQogICAgIHsKQEAgLTMzOSwyNiArMzM3LDQ1IEBAIHByaXZh
dGU6CiBjbGFzcyBTZXJpYWxpemVyIHsKICAgICBjbGFzcyBTdGF0ZUJhc2U7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgU2VyaWFsaXplcihXcml0ZXImIHdyaXRlcikKKyAgICBlbnVtIFN0YXR1cyB7
CisgICAgICAgIFN1Y2Nlc3MsCisgICAgICAgIElucHV0RXJyb3IsCisgICAgICAgIEpTRXhjZXB0
aW9uLAorICAgICAgICBKU0ZhaWx1cmUKKyAgICB9OworCisgICAgU2VyaWFsaXplcihXcml0ZXIm
IHdyaXRlciwgdjg6OlRyeUNhdGNoJiB0cnlDYXRjaCkKICAgICAgICAgOiBtX3dyaXRlcih3cml0
ZXIpCisgICAgICAgICwgbV90cnlDYXRjaCh0cnlDYXRjaCkKICAgICAgICAgLCBtX2RlcHRoKDAp
Ci0gICAgICAgICwgbV9oYXNFcnJvcihmYWxzZSkKKyAgICAgICAgLCBtX3N0YXR1cyhTdWNjZXNz
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKCF0cnlDYXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgfQog
Ci0gICAgYm9vbCBzZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQorICAgIFN0
YXR1cyBzZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogICAgIHsKICAgICAg
ICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgICAgICBTdGF0ZUJhc2UqIHN0YXRlID0gZG9T
ZXJpYWxpemUodmFsdWUsIDApOwogICAgICAgICB3aGlsZSAoc3RhdGUpCiAgICAgICAgICAgICBz
dGF0ZSA9IHN0YXRlLT5hZHZhbmNlKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICFtX2hhc0Vycm9y
OworICAgICAgICByZXR1cm4gbV9zdGF0dXM7CiAgICAgfQogCiAgICAgLy8gRnVuY3Rpb25zIHVz
ZWQgYnkgc2VyaWFsaXphdGlvbiBzdGF0ZXMuCiAKICAgICBTdGF0ZUJhc2UqIGRvU2VyaWFsaXpl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU3RhdGVCYXNlKiBuZXh0KTsKIAorICAgIFN0
YXRlQmFzZSogY2hlY2tFeGNlcHRpb24oU3RhdGVCYXNlKiBzdGF0ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3RyeUNhdGNoLkhhc0NhdWdodCgpID8gaGFuZGxlRXJyb3IoSlNFeGNlcHRpb24s
IHN0YXRlKSA6IDA7CisgICAgfQorCisgICAgU3RhdGVCYXNlKiByZXBvcnRGYWlsdXJlKFN0YXRl
QmFzZSogc3RhdGUpCisgICAgeworICAgICAgICByZXR1cm4gaGFuZGxlRXJyb3IoSlNGYWlsdXJl
LCBzdGF0ZSk7CisgICAgfQorCiAgICAgU3RhdGVCYXNlKiB3cml0ZUFycmF5KHVpbnQzMl90IGxl
bmd0aCwgU3RhdGVCYXNlKiBzdGF0ZSkKICAgICB7CiAgICAgICAgIG1fd3JpdGVyLndyaXRlQXJy
YXkobGVuZ3RoKTsKQEAgLTQ0Nyw3ICs0NjQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAg
ICAgICAgICAgKyttX2luZGV4OwogICAgICAgICAgICAgZm9yICg7IG1faW5kZXggPCBjb21wb3Np
dGUoKS0+TGVuZ3RoKCk7ICsrbV9pbmRleCkgewotICAgICAgICAgICAgICAgIGlmIChTdGF0ZUJh
c2UqIG5ld1N0YXRlID0gc2VyaWFsaXplci5kb1NlcmlhbGl6ZShjb21wb3NpdGUoKS0+R2V0KG1f
aW5kZXgpLCB0aGlzKSkKKyAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUgPSBjb21wb3NpdGUoKS0+R2V0KG1faW5kZXgpOworICAgICAgICAgICAgICAgIGlmIChTdGF0
ZUJhc2UqIG5ld1N0YXRlID0gc2VyaWFsaXplci5jaGVja0V4Y2VwdGlvbih0aGlzKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ld1N0YXRlOworICAgICAgICAgICAgICAgIGlmIChTdGF0
ZUJhc2UqIG5ld1N0YXRlID0gc2VyaWFsaXplci5kb1NlcmlhbGl6ZSh2YWx1ZSwgdGhpcykpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdTdGF0ZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiBzZXJpYWxpemVyLndyaXRlQXJyYXkoY29tcG9zaXRlKCktPkxlbmd0aCgp
LCB0aGlzKTsKQEAgLTQ2Miw4ICs0ODIsNyBAQCBwcml2YXRlOgogICAgIHB1YmxpYzoKICAgICAg
ICAgQWJzdHJhY3RPYmplY3RTdGF0ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgU3Rh
dGVCYXNlKiBuZXh0KQogICAgICAgICAgICAgOiBTdGF0ZTx2ODo6T2JqZWN0PihvYmplY3QsIG5l
eHQpCi0gICAgICAgICAgICAsIG1fcHJvcGVydHlOYW1lcyhvYmplY3QtPkdldFByb3BlcnR5TmFt
ZXMoKSkKLSAgICAgICAgICAgICwgbV9pbmRleCgtMSkKKyAgICAgICAgICAgICwgbV9pbmRleCgw
KQogICAgICAgICAgICAgLCBtX251bVNlcmlhbGl6ZWRQcm9wZXJ0aWVzKDApCiAgICAgICAgICAg
ICAsIG1fbmFtZURvbmUoZmFsc2UpCiAgICAgICAgIHsKQEAgLTQ3MSwxNSArNDkwLDMyIEBAIHBy
aXZhdGU6CiAKICAgICAgICAgdmlydHVhbCBTdGF0ZUJhc2UqIGFkdmFuY2UoU2VyaWFsaXplciYg
c2VyaWFsaXplcikKICAgICAgICAgewotICAgICAgICAgICAgKyttX2luZGV4OwotICAgICAgICAg
ICAgZm9yICg7IG1faW5kZXggPCBtX3Byb3BlcnR5TmFtZXMtPkxlbmd0aCgpOyArK21faW5kZXgp
IHsKLSAgICAgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eU5hbWUuSXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBpZiAoIW1faW5kZXgpIHsKKyAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZXMg
PSBjb21wb3NpdGUoKS0+R2V0UHJvcGVydHlOYW1lcygpOworICAgICAgICAgICAgICAgIGlmIChT
dGF0ZUJhc2UqIG5ld1N0YXRlID0gc2VyaWFsaXplci5jaGVja0V4Y2VwdGlvbih0aGlzKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1N0YXRlOworICAgICAgICAgICAgICAgIGlmICht
X3Byb3BlcnR5TmFtZXMuSXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Vy
aWFsaXplci5yZXBvcnRGYWlsdXJlKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
d2hpbGUgKG1faW5kZXggPCBtX3Byb3BlcnR5TmFtZXMtPkxlbmd0aCgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFtX25hbWVEb25lKSB7CiAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHByb3BlcnR5TmFtZSA9IG1fcHJvcGVydHlOYW1lcy0+R2V0KG1faW5kZXgpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoKHByb3BlcnR5TmFtZS0+SXNTdHJpbmcoKSAmJiBjb21w
b3NpdGUoKS0+SGFzUmVhbE5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lLkFzPHY4OjpTdHJpbmc+
KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHByb3BlcnR5TmFtZS0+SXNVaW50MzIo
KSAmJiBjb21wb3NpdGUoKS0+SGFzUmVhbEluZGV4ZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUtPlVp
bnQzMlZhbHVlKCkpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoU3RhdGVCYXNlKiBuZXdT
dGF0ZSA9IHNlcmlhbGl6ZXIuY2hlY2tFeGNlcHRpb24odGhpcykpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3U3RhdGU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUuSXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6
ZXIucmVwb3J0RmFpbHVyZSh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNTdHJp
bmdQcm9wZXJ0eSA9IHByb3BlcnR5TmFtZS0+SXNTdHJpbmcoKSAmJiBjb21wb3NpdGUoKS0+SGFz
UmVhbE5hbWVkUHJvcGVydHkocHJvcGVydHlOYW1lLkFzPHY4OjpTdHJpbmc+KCkpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoU3RhdGVCYXNlKiBuZXdTdGF0ZSA9IHNlcmlhbGl6ZXIuY2hlY2tF
eGNlcHRpb24odGhpcykpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3U3RhdGU7
CisgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzSW5kZXhlZFByb3BlcnR5ID0gIWhhc1N0cmlu
Z1Byb3BlcnR5ICYmIHByb3BlcnR5TmFtZS0+SXNVaW50MzIoKSAmJiBjb21wb3NpdGUoKS0+SGFz
UmVhbEluZGV4ZWRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUtPlVpbnQzMlZhbHVlKCkpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoU3RhdGVCYXNlKiBuZXdTdGF0ZSA9IHNlcmlhbGl6ZXIuY2hlY2tF
eGNlcHRpb24odGhpcykpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3U3RhdGU7
CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNTdHJpbmdQcm9wZXJ0eSB8fCBoYXNJbmRleGVk
UHJvcGVydHkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZSA9IHByb3Bl
cnR5TmFtZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgKyttX2luZGV4OwogICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3Byb3BlcnR5TmFtZS5Jc0VtcHR5KCkp
OwogICAgICAgICAgICAgICAgIGlmICghbV9uYW1lRG9uZSkgewpAQCAtNDg4LDggKzUyNCwxMSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1N0YXRlOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSA9IGNvbXBvc2l0ZSgpLT5HZXQobV9wcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIGlm
IChTdGF0ZUJhc2UqIG5ld1N0YXRlID0gc2VyaWFsaXplci5jaGVja0V4Y2VwdGlvbih0aGlzKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1N0YXRlOwogICAgICAgICAgICAgICAgIG1f
bmFtZURvbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBtX3Byb3BlcnR5TmFtZS5DbGVhcigp
OworICAgICAgICAgICAgICAgICsrbV9pbmRleDsKICAgICAgICAgICAgICAgICArK21fbnVtU2Vy
aWFsaXplZFByb3BlcnRpZXM7CiAgICAgICAgICAgICAgICAgaWYgKFN0YXRlQmFzZSogbmV3U3Rh
dGUgPSBzZXJpYWxpemVyLmRvU2VyaWFsaXplKHZhbHVlLCB0aGlzKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ld1N0YXRlOwpAQCAtNTQwLDcgKzU3OSw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBBU1NFUlQoc3RhdGUpOwogICAgICAgICArK21fZGVwdGg7Ci0gICAgICAgIHJl
dHVybiBjaGVja0NvbXBvc2l0ZShzdGF0ZSkgPyBzdGF0ZSA6IGhhbmRsZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIGNoZWNrQ29tcG9zaXRlKHN0YXRlKSA/IHN0YXRlIDogaGFuZGxlRXJy
b3IoSW5wdXRFcnJvciwgc3RhdGUpOwogICAgIH0KIAogICAgIFN0YXRlQmFzZSogcG9wKFN0YXRl
QmFzZSogc3RhdGUpCkBAIC01NTIsOSArNTkxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBuZXh0OwogICAgIH0KIAotICAgIFN0YXRlQmFzZSogaGFuZGxlRXJyb3IoU3RhdGVCYXNlKiBz
dGF0ZSkKKyAgICBTdGF0ZUJhc2UqIGhhbmRsZUVycm9yKFN0YXR1cyBlcnJvclN0YXR1cywgU3Rh
dGVCYXNlKiBzdGF0ZSkKICAgICB7Ci0gICAgICAgIG1faGFzRXJyb3IgPSB0cnVlOworICAgICAg
ICBBU1NFUlQoZXJyb3JTdGF0dXMgIT0gU3VjY2Vzcyk7CisgICAgICAgIG1fc3RhdHVzID0gZXJy
b3JTdGF0dXM7CiAgICAgICAgIHdoaWxlIChzdGF0ZSkgewogICAgICAgICAgICAgU3RhdGVCYXNl
KiB0bXAgPSBzdGF0ZS0+bmV4dFN0YXRlKCk7CiAgICAgICAgICAgICBkZWxldGUgc3RhdGU7CkBA
IC02MTYsNyArNjU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgV1RGOjpCeXRlQXJyYXkqIHBpeGVs
QXJyYXkgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAgICAgICBtX3dyaXRlci53cml0
ZUltYWdlRGF0YShpbWFnZURhdGEtPndpZHRoKCksIGltYWdlRGF0YS0+aGVpZ2h0KCksIHBpeGVs
QXJyYXktPmRhdGEoKSwgcGl4ZWxBcnJheS0+bGVuZ3RoKCkpOwogICAgIH0KLSAgICAKKwogICAg
IHZvaWQgd3JpdGVSZWdFeHAodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogICAgIHsKICAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6UmVnRXhwPiByZWdFeHAgPSB2YWx1ZS5Bczx2ODo6UmVnRXhw
PigpOwpAQCAtNjMyLDE5ICs2NzIsMjAgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBTdGF0ZUJh
c2UqIG5ld09iamVjdFN0YXRlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCBTdGF0ZUJh
c2UqIG5leHQpCiAgICAgewotICAgICAgICAvLyBGSVhNRToKLSAgICAgICAgLy8gLSBjaGVjayBu
b3QgYSB3cmFwcGVyCi0gICAgICAgIC8vIC0gc3VwcG9ydCBGaWxlLCBldGMuCisgICAgICAgIC8v
IEZJWE1FOiBjaGVjayBub3QgYSB3cmFwcGVyCiAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0U3Rh
dGUob2JqZWN0LCBuZXh0KTsKICAgICB9CiAKICAgICBXcml0ZXImIG1fd3JpdGVyOworICAgIHY4
OjpUcnlDYXRjaCYgbV90cnlDYXRjaDsKICAgICBpbnQgbV9kZXB0aDsKLSAgICBib29sIG1faGFz
RXJyb3I7CisgICAgU3RhdHVzIG1fc3RhdHVzOwogfTsKIAogU2VyaWFsaXplcjo6U3RhdGVCYXNl
KiBTZXJpYWxpemVyOjpkb1NlcmlhbGl6ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFN0
YXRlQmFzZSogbmV4dCkKIHsKKyAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gcmVwb3J0RmFpbHVyZShuZXh0KTsKICAgICBpZiAodmFsdWUtPklzVW5kZWZpbmVkKCkpCiAg
ICAgICAgIG1fd3JpdGVyLndyaXRlVW5kZWZpbmVkKCk7CiAgICAgZWxzZSBpZiAodmFsdWUtPklz
TnVsbCgpKQpAQCAtODkwLDcgKzkzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICp2YWx1ZSA9IHRv
VjgoaW1hZ2VEYXRhLnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAg
ICAKKwogICAgIGJvb2wgcmVhZFJlZ0V4cCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4qIHZhbHVlKQog
ICAgIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhdHRlcm47CkBAIC0xMTczLDEy
ICsxMjE0LDMzIEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgYm9vbCYKIHsKICAgICBkaWRUaHJvdyA9IGZh
bHNlOwogICAgIFdyaXRlciB3cml0ZXI7Ci0gICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRl
cik7Ci0gICAgaWYgKCFzZXJpYWxpemVyLnNlcmlhbGl6ZSh2YWx1ZSkpIHsKKyAgICBTZXJpYWxp
emVyOjpTdGF0dXMgc3RhdHVzOworICAgIHsKKyAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNo
OworICAgICAgICBTZXJpYWxpemVyIHNlcmlhbGl6ZXIod3JpdGVyLCB0cnlDYXRjaCk7CisgICAg
ICAgIHN0YXR1cyA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKKyAgICAgICAgaWYgKHN0
YXR1cyA9PSBTZXJpYWxpemVyOjpKU0V4Y2VwdGlvbikgeworICAgICAgICAgICAgLy8gSWYgdGhl
cmUgd2FzIGEgSlMgZXhjZXB0aW9uIHRocm93biwgcmUtdGhyb3cgaXQuCisgICAgICAgICAgICBk
aWRUaHJvdyA9IHRydWU7CisgICAgICAgICAgICB0cnlDYXRjaC5SZVRocm93KCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHN0YXR1cyA9PSBTZXJpYWxp
emVyOjpJbnB1dEVycm9yKSB7CisgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhbiBpbnB1dCBlcnJv
ciwgdGhyb3cgYSBuZXcgZXhjZXB0aW9uIG91dHNpZGUKKyAgICAgICAgLy8gb2YgdGhlIFRyeUNh
dGNoIHNjb3BlLgorICAgICAgICBkaWRUaHJvdyA9IHRydWU7CiAgICAgICAgIHRocm93RXJyb3Io
Tk9UX1NVUFBPUlRFRF9FUlIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzdGF0
dXMgPT0gU2VyaWFsaXplcjo6SlNGYWlsdXJlKSB7CisgICAgICAgIC8vIElmIHRoZXJlIHdhcyBh
IEpTIGZhaWx1cmUgKGJ1dCBubyBleGNlcHRpb24pLCB0aGVyZSdzIG5vdAorICAgICAgICAvLyBt
dWNoIHdlIGNhbiBkbyBleGNlcHQgZm9yIHVud2luZGluZyB0aGUgQysrIHN0YWNrIGJ5CisgICAg
ICAgIC8vIHByZXRlbmRpbmcgdGhlcmUgd2FzIGEgSlMgZXhjZXB0aW9uLgogICAgICAgICBkaWRU
aHJvdyA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgQVNTRVJUKHN0YXR1cyA9
PSBTZXJpYWxpemVyOjpTdWNjZXNzKTsKICAgICBtX2RhdGEgPSBTdHJpbmcoU3RyaW5nSW1wbDo6
YWRvcHQod3JpdGVyLmRhdGEoKSkpLmNyb3NzVGhyZWFkU3RyaW5nKCk7CiB9CiAK
</data>
<flag name="review"
          id="74313"
          type_id="1"
          status="+"
          setter="mihaip"
    />
          </attachment>
      

    </bug>

</bugzilla>