<?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>30469</bug_id>
          
          <creation_ts>2009-10-16 17:29:38 -0700</creation_ts>
          <short_desc>We should not bubble up events if we drag something to an iframe that has an invalid source</short_desc>
          <delta_ts>2009-11-05 10:06:30 -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 JavaScript</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>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>155319</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-10-16 17:29:38 -0700</bug_when>
    <thetext>We should not bubble up events if we drag something to an iframe that has an invalid source. FF/IE does not do this and we should mimic the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155321</commentid>
    <comment_count>1</comment_count>
      <attachid>41343</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-10-16 17:36:40 -0700</bug_when>
    <thetext>Created attachment 41343
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155877</commentid>
    <comment_count>2</comment_count>
      <attachid>41343</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-19 13:49:52 -0700</bug_when>
    <thetext>Comment on attachment 41343
Proposed Patch

Do we have a test which covers the case of a valid source bubbling correctly?

This looks like copy-paste code which should be replaced by a static function, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156325</commentid>
    <comment_count>3</comment_count>
      <attachid>41531</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-10-20 15:54:10 -0700</bug_when>
    <thetext>Created attachment 41531
Proposed Patch

Added the test script to cover the case of valid source bubbling. Also introduce a helper function to replace the similar code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159437</commentid>
    <comment_count>4</comment_count>
      <attachid>41531</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-10-30 14:01:33 -0700</bug_when>
    <thetext>Comment on attachment 41531
Proposed Patch

Almost there.

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; +        Tests that we don&apos;t bubble up the events if we drag something to an
&gt; +        iframe that has an invalid source.

Now that you have a test that verifies both bubbling with valid and invalid targets, this description could change to reflect this.

&gt; +        * http/tests/misc/drag-over-iframe-invalid-source-does-not-bubble-expected.txt: Added.
&gt; +        * http/tests/misc/drag-over-iframe-invalid-source-does-not-bubble.html: Added.

I guess the test name could now also be different. Perhaps &quot;bubble-drag-events-from-iframe.html&quot;?

&gt; diff --git a/LayoutTests/http/tests/misc/drag-over-iframe-invalid-source-does-not-bubble.html b/LayoutTests/http/tests/misc/drag-over-iframe-invalid-source-does-not-bubble.html
&gt; +function log(msg)
&gt; +{
&gt; +    document.getElementById(&quot;log&quot;).appendChild(document.createTextNode(msg + &quot;\n&quot;));
&gt; +}

Mix of styles - opening &apos;{&apos; of a functions follows different style through the file. Need to stick to one style.

&gt; +    testDragEventBubbling(&quot;dragTargetParent&quot;, &quot;dragTarget&quot;);
&gt; +
&gt; +    log(&quot;Tests that we bubble up the events if we drag something to a valid source&quot;);
&gt; +    testDragEventBubbling(&quot;dragTargetParent2&quot;, &quot;dragTarget2&quot;);

Perhaps better names for valid/invalid targets could be validDragTarget/validDragTargetParent and invalidDragTarget/invalidDragTartgetParent?

&gt; +
&gt; +&lt;div id=&quot;dragTargetParent&quot;&gt;
&gt; +&lt;iframe id=&quot;dragTarget&quot; src=&quot;file:&quot;&gt;&lt;/iframe&gt;
&gt; +&lt;/div&gt;
&gt; +&lt;div contentEditable id=&quot;dragTargetParent2&quot;&gt;
&gt; +&lt;span id=&quot;dragTarget2&quot;&gt;Drag here.&lt;/span&gt;
&gt; +&lt;/div&gt;

In one case it is iframe and in another a span. Should it be both iframes, one with valid url and another with invalid one?
This way, only one variable would change.

&gt; diff --git a/WebCore/page/EventHandler.cpp b/WebCore/page/EventHandler.cpp
&gt; +bool EventHandler::handleDragAndDropForTarget(DragAndDropHandleType type, Node* target, const AtomicString&amp; eventType, const PlatformMouseEvent&amp; event, Clipboard* clipboard)
&gt; +                default:
&gt; +                    ASSERT(false);
&gt; +                    break;

The &apos;default&apos; can be removed. Now it can not be hit and if someone adds more values to the enum, gcc will issue a warning in compile time, but if there is &apos;default&apos; it won&apos;t.
r- because it seems the valid target in the test should also be iframe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160519</commentid>
    <comment_count>5</comment_count>
      <attachid>42498</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-11-04 11:11:20 -0800</bug_when>
    <thetext>Created attachment 42498
Proposed Patch

All fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160649</commentid>
    <comment_count>6</comment_count>
      <attachid>42498</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-04 16:11:36 -0800</bug_when>
    <thetext>Comment on attachment 42498
Proposed Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160855</commentid>
    <comment_count>7</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-11-05 10:06:30 -0800</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/50566.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41343</attachid>
            <date>2009-10-16 17:36:40 -0700</date>
            <delta_ts>2009-10-20 15:54:10 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>30469</filename>
            <type>text/plain</type>
            <size>8414</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMTViNTJhLi5mODVhODcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTAt
MTYgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHRoYXQgd2UgZG9uJ3QgYnViYmxlIHVw
IHRoZSBldmVudHMgaWYgd2UgZHJhZyBzb21ldGhpbmcgdG8gYW4KKyAgICAgICAgaWZyYW1lIHRo
YXQgaGFzIGFuIGludmFsaWQgc291cmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzA0NjkKKworICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9kcmFn
LW92ZXItaWZyYW1lLWludmFsaWQtc291cmNlLWRvZXMtbm90LWJ1YmJsZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFs
aWQtc291cmNlLWRvZXMtbm90LWJ1YmJsZS5odG1sOiBBZGRlZC4KKwogMjAwOS0xMC0xNiAgQW5k
cmV3IFNjaGVya3VzICA8c2NoZXJrdXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9kcmFnLW92ZXItaWZyYW1lLWludmFsaWQtc291cmNlLWRvZXMtbm90LWJ1YmJsZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZHJhZy1vdmVyLWlmcmFtZS1pbnZh
bGlkLXNvdXJjZS1kb2VzLW5vdC1idWJibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjMxOTBkOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvZHJhZy1vdmVyLWlmcmFtZS1pbnZhbGlkLXNvdXJjZS1kb2VzLW5v
dC1idWJibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDA6IE5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6IGZpbGU6CitUaGlzIHBh
Z2UgdGVzdHMgdGhhdCB3ZSBkb24ndCBidWJibGUgdXAgdGhlIGV2ZW50cyBpZiB3ZSBkcmFnIHNv
bWV0aGluZyB0byBhbiBpZnJhbWUgdGhhdCBoYXMgYW4gaW52YWxpZCBzb3VyY2UuCisKKworU1VD
Q0VTUyAtIGlmIHlvdSBkbyBub3Qgc2VlIGV2ZW50IGxvZ2dpbmcgbWVzc2FnZXMKKworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZHJhZy1vdmVyLWlmcmFtZS1pbnZh
bGlkLXNvdXJjZS1kb2VzLW5vdC1idWJibGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFsaWQtc291cmNlLWRvZXMtbm90LWJ1YmJsZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMDRjZTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZHJhZy1vdmVyLWlmcmFtZS1pbnZh
bGlkLXNvdXJjZS1kb2VzLW5vdC1idWJibGUuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8aGVhZD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsb2ciKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAiXG4i
KSk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOyAKKworICAgIHZhciBkcmFnUGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRyYWdQYXJlbnQiKTsKKyAgICBkcmFnUGFyZW50Lm9uZHJhZ2VudGVyID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGxvZygib25kcmFnZW50ZXIiKTsKKyAgICB9CisgICAgZHJhZ1BhcmVudC5vbmRy
YWdvdmVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGxvZygib25kcmFnb3ZlciIpOworICAgIH0K
KyAgICBkcmFnUGFyZW50Lm9uZHJhZ2xlYXZlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGxvZygi
b25kcmFnbGVhdmUiKTsKKyAgICB9CisgICAgZHJhZ1BhcmVudC5vbmRyb3AgPSBmdW5jdGlvbigp
IHsKKyAgICAgICBsb2coIm9uZHJvcCIpOworICAgIH0KKworICAgIHZhciBhYmUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYWJlIik7CisgICAgdmFyIGRyYWdUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZHJhZ1RhcmdldCIpOworCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oYWJlLm9mZnNldExlZnQgKyA1MCwgYWJlLm9mZnNldFRvcCArIDUwKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCg1MDApOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGRyYWdUYXJnZXQub2Zmc2V0TGVmdCArIDEwLCBkcmFn
VGFyZ2V0Lm9mZnNldFRvcCArIDEwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKworPHA+VGhpcyBwYWdlIHRlc3RzIHRoYXQgd2UgZG9uJ3QgYnVi
YmxlIHVwIHRoZSBldmVudHMgaWYgd2UgZHJhZyBzb21ldGhpbmcgdG8gYW4gaWZyYW1lIHRoYXQg
aGFzIGFuIGludmFsaWQgc291cmNlLjwvcD4KKzxpbWcgaWQ9ImFiZSIgc3JjPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2FiZS5wbmciPgorPGRpdj5TVUNDRVNTIC0g
aWYgeW91IGRvIG5vdCBzZWUgZXZlbnQgbG9nZ2luZyBtZXNzYWdlczwvZGl2PgorPGRpdiBpZD0i
ZHJhZ1BhcmVudCI+Cis8aWZyYW1lIGlkPSJkcmFnVGFyZ2V0IiBzcmM9ImZpbGU6Ij48L2lmcmFt
ZT4KKzwvZGl2PgorPHByZSBpZD0ibG9nIj48L3ByZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdmNjBhZi4uYTRkODdjMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAwOS0xMC0xNiAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkIG5v
dCBidWJibGUgdXAgZXZlbnRzIGlmIHdlIGRyYWcgc29tZXRoaW5nIHRvIGFuIGlmcmFtZSB0aGF0
CisgICAgICAgIGhhcyBhbiBpbnZhbGlkIHNvdXJjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNDY5CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0
cy9taXNjL2RyYWctb3Zlci1pZnJhbWUtaW52YWxpZC1zb3VyY2UtZG9lcy1ub3QtYnViYmxlLmh0
bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcCk6CisKIDIwMDktMTAtMTYgIFN0ZXZlIEZhbGtlbmJ1
cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVu
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBhMTljZDgyLi44YmRjYTA0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtMTUyOCwyNiArMTUyOCwyOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRl
RHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgog
ICAgICAgICAvLyBpdCBpcyBzb21ldGltZXMgaW5jb3JyZWN0IHdoZW4gZHJhZ2dpbmcgd2l0aGlu
IHN1YmZyYW1lcywgYXMgc2VlbiB3aXRoCiAgICAgICAgIC8vIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2RyYWctaW4tZnJhbWVzLmh0bWwuCiAgICAgICAgIGlmIChuZXdUYXJnZXQpIHsKLSAgICAg
ICAgICAgIEZyYW1lKiBmcmFtZSA9IChuZXdUYXJnZXQtPmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8
IG5ld1RhcmdldC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSA/IHN0YXRpY19jYXN0PEhUTUxGcmFt
ZUVsZW1lbnRCYXNlKj4obmV3VGFyZ2V0KS0+Y29udGVudEZyYW1lKCkgOiAwOwotICAgICAgICAg
ICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgICAgIGFjY2VwdCA9IGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICBpZiAobmV3VGFyZ2V0LT5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBu
ZXdUYXJnZXQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgeworICAgICAgICAgICAgICAgIEZyYW1l
KiBmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4obmV3VGFyZ2V0KS0+
Y29udGVudEZyYW1lKCk7CisgICAgICAgICAgICAgICAgaWYgKGZyYW1lKQorICAgICAgICAgICAg
ICAgICAgICBhY2NlcHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZURyYWdBbmREcm9w
KGV2ZW50LCBjbGlwYm9hcmQpOworICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
YWNjZXB0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCBu
ZXdUYXJnZXQsIGV2ZW50LCBjbGlwYm9hcmQpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1f
ZHJhZ1RhcmdldCkgewotICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gKG1fZHJhZ1RhcmdldC0+
aGFzVGFnTmFtZShmcmFtZVRhZykgfHwgbV9kcmFnVGFyZ2V0LT5oYXNUYWdOYW1lKGlmcmFtZVRh
ZykpID8gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihtX2RyYWdUYXJnZXQuZ2V0
KCkpLT5jb250ZW50RnJhbWUoKSA6IDA7Ci0gICAgICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAg
ICAgICAgICAgYWNjZXB0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT51cGRhdGVEcmFnQW5kRHJv
cChldmVudCwgY2xpcGJvYXJkKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICht
X2RyYWdUYXJnZXQtPmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8IG1fZHJhZ1RhcmdldC0+aGFzVGFn
TmFtZShpZnJhbWVUYWcpKSB7CisgICAgICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGlj
X2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihtX2RyYWdUYXJnZXQuZ2V0KCkpLT5jb250ZW50
RnJhbWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUpCisgICAgICAgICAgICAgICAgICAg
IGFjY2VwdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQs
IGNsaXBib2FyZCk7CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBkaXNwYXRj
aERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsIG1fZHJhZ1RhcmdldC5nZXQo
KSwgZXZlbnQsIGNsaXBib2FyZCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAobmV3VGFyZ2V0KSB7Ci0gICAgICAgICAgICBGcmFtZSogZnJhbWUgPSAobmV3VGFyZ2V0LT5o
YXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBuZXdUYXJnZXQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkg
PyBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG5ld1RhcmdldCktPmNvbnRlbnRG
cmFtZSgpIDogMDsKLSAgICAgICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgICAgICBhY2Nl
cHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBjbGlw
Ym9hcmQpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKG5ld1RhcmdldC0+aGFz
VGFnTmFtZShmcmFtZVRhZykgfHwgbmV3VGFyZ2V0LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsK
KyAgICAgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVt
ZW50QmFzZSo+KG5ld1RhcmdldCktPmNvbnRlbnRGcmFtZSgpOworICAgICAgICAgICAgICAgIGlm
IChmcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0ID0gZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsKKyAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgIGFjY2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFt
ZXMoKS5kcmFnb3ZlckV2ZW50LCBuZXdUYXJnZXQsIGV2ZW50LCBjbGlwYm9hcmQpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTU1OSwxMSArMTU2MiwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBk
YXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJk
Kgogdm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCogY2xpcGJvYXJkKQogewogICAgIGlmIChtX2RyYWdU
YXJnZXQpIHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gKG1fZHJhZ1RhcmdldC0+aGFzVGFnTmFt
ZShmcmFtZVRhZykgfHwgbV9kcmFnVGFyZ2V0LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIAotICAg
ICAgICAgICAgICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+
KG1fZHJhZ1RhcmdldC5nZXQoKSktPmNvbnRlbnRGcmFtZSgpIDogMDsKLSAgICAgICAgaWYgKGZy
YW1lKQotICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5jYW5jZWxEcmFnQW5kRHJv
cChldmVudCwgY2xpcGJvYXJkKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoKG1fZHJhZ1Rh
cmdldC0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwgbV9kcmFnVGFyZ2V0LT5oYXNUYWdOYW1lKGlm
cmFtZVRhZykpKSB7CisgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1M
RnJhbWVFbGVtZW50QmFzZSo+KG1fZHJhZ1RhcmdldC5nZXQoKSktPmNvbnRlbnRGcmFtZSgpOwor
ICAgICAgICAgICAgaWYgKGZyYW1lKQorICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+Y2FuY2VsRHJhZ0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7CisgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2
ZW50LCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50LCBjbGlwYm9hcmQpOwogICAgIH0KICAgICBj
bGVhckRyYWdTdGF0ZSgpOwpAQCAtMTU3MywxMSArMTU3NiwxMSBAQCBib29sIEV2ZW50SGFuZGxl
cjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENs
aXBib2FyZAogewogICAgIGJvb2wgYWNjZXB0ID0gZmFsc2U7CiAgICAgaWYgKG1fZHJhZ1Rhcmdl
dCkgewotICAgICAgICBGcmFtZSogZnJhbWUgPSAobV9kcmFnVGFyZ2V0LT5oYXNUYWdOYW1lKGZy
YW1lVGFnKSB8fCBtX2RyYWdUYXJnZXQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4obV9k
cmFnVGFyZ2V0LmdldCgpKS0+Y29udGVudEZyYW1lKCkgOiAwOwotICAgICAgICBpZiAoZnJhbWUp
Ci0gICAgICAgICAgICBhY2NlcHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnBlcmZvcm1EcmFn
QW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAobV9k
cmFnVGFyZ2V0LT5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBtX2RyYWdUYXJnZXQtPmhhc1RhZ05h
bWUoaWZyYW1lVGFnKSkgeworICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
SFRNTEZyYW1lRWxlbWVudEJhc2UqPihtX2RyYWdUYXJnZXQuZ2V0KCkpLT5jb250ZW50RnJhbWUo
KTsKKyAgICAgICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAgICAgICAgICBhY2NlcHQgPSBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsK
KyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBhY2NlcHQgPSBkaXNwYXRjaERyYWdFdmVudChl
dmVudE5hbWVzKCkuZHJvcEV2ZW50LCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50LCBjbGlwYm9h
cmQpOwogICAgIH0KICAgICBjbGVhckRyYWdTdGF0ZSgpOwo=
</data>
<flag name="review"
          id="22709"
          type_id="1"
          status="-"
          setter="eric"
    />
    <flag name="commit-queue"
          id="22710"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41531</attachid>
            <date>2009-10-20 15:54:10 -0700</date>
            <delta_ts>2009-11-04 11:11:20 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>30469_2</filename>
            <type>text/plain</type>
            <size>11054</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZDBkNGVlLi41MzI5MzlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTAt
MjAgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHRoYXQgd2UgZG9uJ3QgYnViYmxlIHVw
IHRoZSBldmVudHMgaWYgd2UgZHJhZyBzb21ldGhpbmcgdG8gYW4KKyAgICAgICAgaWZyYW1lIHRo
YXQgaGFzIGFuIGludmFsaWQgc291cmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzA0NjkKKworICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9kcmFn
LW92ZXItaWZyYW1lLWludmFsaWQtc291cmNlLWRvZXMtbm90LWJ1YmJsZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFs
aWQtc291cmNlLWRvZXMtbm90LWJ1YmJsZS5odG1sOiBBZGRlZC4KKwogMjAwOS0xMC0yMCAgWGFu
IExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgU2tpcCBhIGJ1bmNoIG9mIGZh
aWxpbmcgRG5EIHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2RyYWctb3Zlci1pZnJhbWUtaW52YWxpZC1zb3VyY2UtZG9lcy1ub3QtYnViYmxlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFs
aWQtc291cmNlLWRvZXMtbm90LWJ1YmJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZTY1ODM1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFsaWQtc291cmNlLWRvZXMtbm90
LWJ1YmJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDA6IE5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6IGZpbGU6CitUaGlzIHBh
Z2UgdGVzdHMgdGhlIGRyYWcgZXZlbnQgYnViYmxpbmcuCisKKworCitEcmFnIGhlcmUuCitUZXN0
cyB0aGF0IHdlIGRvbid0IGJ1YmJsZSB1cCB0aGUgZXZlbnRzIGlmIHdlIGRyYWcgc29tZXRoaW5n
IHRvIGFuIGlmcmFtZSB0aGF0IGhhcyBhbiBpbnZhbGlkIHNvdXJjZQorVGVzdHMgdGhhdCB3ZSBi
dWJibGUgdXAgdGhlIGV2ZW50cyBpZiB3ZSBkcmFnIHNvbWV0aGluZyB0byBhIHZhbGlkIHNvdXJj
ZQorb25kcmFnZW50ZXIKK29uZHJhZ292ZXIKK29uZHJvcAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvZHJhZy1vdmVyLWlmcmFtZS1pbnZhbGlkLXNvdXJjZS1kb2Vz
LW5vdC1idWJibGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9kcmFnLW92ZXIt
aWZyYW1lLWludmFsaWQtc291cmNlLWRvZXMtbm90LWJ1YmJsZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YWQ3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvZHJhZy1vdmVyLWlmcmFtZS1pbnZhbGlkLXNvdXJjZS1kb2Vz
LW5vdC1idWJibGUuaHRtbApAQCAtMCwwICsxLDY2IEBACis8aGVhZD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBsb2cobXNnKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAiXG4iKSk7Cit9CisKK2Z1bmN0
aW9uIHRlc3REcmFnRXZlbnRCdWJibGluZyhkcmFnVGFyZ2V0SWQsIGRyYWdUYXJnZXRQYXJlbnRJ
ZCkgeworICAgIHZhciBkcmFnVGFyZ2V0UGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZHJhZ1RhcmdldFBhcmVudElkKTsKKyAgICBkcmFnVGFyZ2V0UGFyZW50Lm9uZHJhZ2VudGVyID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIGxvZygib25kcmFnZW50ZXIiKTsKKyAgICB9CisgICAgZHJh
Z1RhcmdldFBhcmVudC5vbmRyYWdvdmVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGxvZygib25k
cmFnb3ZlciIpOworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAgLy8gQ2FuY2VsIHRo
ZSBkcmFnLCBzbyB3ZSBnZXQgdGhlIGRyb3AuCisgICAgfQorICAgIGRyYWdUYXJnZXRQYXJlbnQu
b25kcmFnbGVhdmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgbG9nKCJvbmRyYWdsZWF2ZSIpOwor
ICAgIH0KKyAgICBkcmFnVGFyZ2V0UGFyZW50Lm9uZHJvcCA9IGZ1bmN0aW9uKCkgeworICAgICAg
IGxvZygib25kcm9wIik7CisgICAgfQorCisgICAgdmFyIGFiZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJhYmUiKTsKKyAgICB2YXIgZHJhZ1RhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKGRyYWdUYXJnZXRJZCk7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhhYmUub2Zm
c2V0TGVmdCArIDUwLCBhYmUub2Zmc2V0VG9wICsgNTApOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgLy8gTGVhcCBmb3J3YXJk
IHNvIHRoYXQgdGhlIG5leHQgbW91c2VEb3duIGRvZXNuJ3QgdHJpZ2dlciBhIHRyaXBsZSBjbGlj
ay4KKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMjAwKTsKKworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgIC8vIExlYXAgZm9yd2FyZCBzbyB0aGF0IHRoZSBtb3VzZSBtb3Zl
bWVudCBjYXVzZXMgYSBkcmFnIGluc3RlYWQgb2Ygc2VsZWN0aW9uIGNyZWF0aW9uLgorICAgIGV2
ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhkcmFnVGFyZ2V0Lm9mZnNldExlZnQgKyAxLCBkcmFnVGFyZ2V0Lm9mZnNldFRvcCArIDEpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
ICgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7IAorCisgICAgbG9nKCJUZXN0cyB0aGF0IHdl
IGRvbid0IGJ1YmJsZSB1cCB0aGUgZXZlbnRzIGlmIHdlIGRyYWcgc29tZXRoaW5nIHRvIGFuIGlm
cmFtZSB0aGF0IGhhcyBhbiBpbnZhbGlkIHNvdXJjZSIpOworICAgIHRlc3REcmFnRXZlbnRCdWJi
bGluZygiZHJhZ1RhcmdldFBhcmVudCIsICJkcmFnVGFyZ2V0Iik7CisKKyAgICBsb2coIlRlc3Rz
IHRoYXQgd2UgYnViYmxlIHVwIHRoZSBldmVudHMgaWYgd2UgZHJhZyBzb21ldGhpbmcgdG8gYSB2
YWxpZCBzb3VyY2UiKTsKKyAgICB0ZXN0RHJhZ0V2ZW50QnViYmxpbmcoImRyYWdUYXJnZXRQYXJl
bnQyIiwgImRyYWdUYXJnZXQyIik7CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPHA+VGhpcyBwYWdlIHRlc3RzIHRoZSBk
cmFnIGV2ZW50IGJ1YmJsaW5nLjwvcD4KKzxpbWcgaWQ9ImFiZSIgc3JjPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2FiZS5wbmciPgorPGRpdiBpZD0iZHJhZ1Rhcmdl
dFBhcmVudCI+Cis8aWZyYW1lIGlkPSJkcmFnVGFyZ2V0IiBzcmM9ImZpbGU6Ij48L2lmcmFtZT4K
KzwvZGl2PgorPGRpdiBjb250ZW50RWRpdGFibGUgaWQ9ImRyYWdUYXJnZXRQYXJlbnQyIj4KKzxz
cGFuIGlkPSJkcmFnVGFyZ2V0MiI+RHJhZyBoZXJlLjwvc3Bhbj4KKzwvZGl2PgorPHByZSBpZD0i
bG9nIj48L3ByZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMTZlZDllNy4uMzhiM2ZiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0xMC0yMCAg
SmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkIG5vdCBidWJibGUgdXAgZXZlbnRzIGlm
IHdlIGRyYWcgc29tZXRoaW5nIHRvIGFuIGlmcmFtZSB0aGF0CisgICAgICAgIGhhcyBhbiBpbnZh
bGlkIHNvdXJjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMwNDY5CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9taXNjL2RyYWctb3Zlci1pZnJh
bWUtaW52YWxpZC1zb3VyY2UtZG9lcy1ub3QtYnViYmxlLmh0bWwKKworICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZ0FuZERyb3BGb3JUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1
cGRhdGVEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNl
bERyYWdBbmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURy
YWdBbmREcm9wKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjopOgorCiAyMDA5LTEwLTIwICBab2x0YW4gSG9ydmF0aCAgPHpv
bHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAppbmRleCA0ZTk3YWJhLi43MWU5N2Q1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cApAQCAtMTUwOCw2ICsxNTA4LDM0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogZHJhZ1RhCiAgICAgcmV0
dXJuIG1lLT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CiAKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVEcmFnQW5kRHJvcEZvclRhcmdldChEcmFnQW5kRHJvcEhhbmRsZVR5cGUgdHlwZSwgTm9kZSog
dGFyZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCit7CisgICAgYm9vbCBhY2NlcHQg
PSBmYWxzZTsKKworICAgIGlmICh0YXJnZXQtPmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8IHRhcmdl
dC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRp
Y19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4odGFyZ2V0KS0+Y29udGVudEZyYW1lKCk7Cisg
ICAgICAgIGlmIChmcmFtZSkgeworICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBVcGRhdGVEcmFnQW5kRHJvcDoKKyAgICAgICAgICAgICAgICAgICAgYWNj
ZXB0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgY2xp
cGJvYXJkKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBDYW5jZWxEcmFnQW5kRHJvcDoKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5jYW5jZWxEcmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBQZXJmb3JtRHJhZ0FuZERyb3A6
CisgICAgICAgICAgICAgICAgICAgIGFjY2VwdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cGVy
Zm9ybURyYWdBbmREcm9wKGV2ZW50LCBjbGlwYm9hcmQpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBhY2NlcHQgPSBkaXNwYXRjaERyYWdFdmVudChl
dmVudFR5cGUsIHRhcmdldCwgZXZlbnQsIGNsaXBib2FyZCk7CisKKyAgICByZXR1cm4gYWNjZXB0
OworfQorCiBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCiB7CiAgICAgYm9vbCBh
Y2NlcHQgPSBmYWxzZTsKQEAgLTE1MjksMjkgKzE1NTcsMTQgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBi
b2FyZCoKICAgICAgICAgLy8gRklYTUU6IHRoaXMgb3JkZXJpbmcgd2FzIGV4cGxpY2l0bHkgY2hv
c2VuIHRvIG1hdGNoIFdpbklFLiBIb3dldmVyLAogICAgICAgICAvLyBpdCBpcyBzb21ldGltZXMg
aW5jb3JyZWN0IHdoZW4gZHJhZ2dpbmcgd2l0aGluIHN1YmZyYW1lcywgYXMgc2VlbiB3aXRoCiAg
ICAgICAgIC8vIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctaW4tZnJhbWVzLmh0bWwuCi0g
ICAgICAgIGlmIChuZXdUYXJnZXQpIHsKLSAgICAgICAgICAgIEZyYW1lKiBmcmFtZSA9IChuZXdU
YXJnZXQtPmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8IG5ld1RhcmdldC0+aGFzVGFnTmFtZShpZnJh
bWVUYWcpKSA/IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4obmV3VGFyZ2V0KS0+
Y29udGVudEZyYW1lKCkgOiAwOwotICAgICAgICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAg
ICAgIGFjY2VwdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3AoZXZl
bnQsIGNsaXBib2FyZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWNjZXB0
ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCBuZXdUYXJn
ZXQsIGV2ZW50LCBjbGlwYm9hcmQpOwotICAgICAgICB9CisgICAgICAgIGlmIChuZXdUYXJnZXQp
CisgICAgICAgICAgICBhY2NlcHQgPSBoYW5kbGVEcmFnQW5kRHJvcEZvclRhcmdldChVcGRhdGVE
cmFnQW5kRHJvcCwgbmV3VGFyZ2V0LCBldmVudE5hbWVzKCkuZHJhZ2VudGVyRXZlbnQsIGV2ZW50
LCBjbGlwYm9hcmQpOwogCi0gICAgICAgIGlmIChtX2RyYWdUYXJnZXQpIHsKLSAgICAgICAgICAg
IEZyYW1lKiBmcmFtZSA9IChtX2RyYWdUYXJnZXQtPmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8IG1f
ZHJhZ1RhcmdldC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSA/IHN0YXRpY19jYXN0PEhUTUxGcmFt
ZUVsZW1lbnRCYXNlKj4obV9kcmFnVGFyZ2V0LmdldCgpKS0+Y29udGVudEZyYW1lKCkgOiAwOwot
ICAgICAgICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgICAgIGFjY2VwdCA9IGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1l
cygpLmRyYWdsZWF2ZUV2ZW50LCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50LCBjbGlwYm9hcmQp
OwotICAgICAgICB9CisgICAgICAgIGlmIChtX2RyYWdUYXJnZXQpCisgICAgICAgICAgICBoYW5k
bGVEcmFnQW5kRHJvcEZvclRhcmdldChVcGRhdGVEcmFnQW5kRHJvcCwgbV9kcmFnVGFyZ2V0Lmdl
dCgpLCBldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsIGV2ZW50LCBjbGlwYm9hcmQpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGlmIChuZXdUYXJnZXQpIHsKLSAgICAgICAgICAgIEZyYW1lKiBm
cmFtZSA9IChuZXdUYXJnZXQtPmhhc1RhZ05hbWUoZnJhbWVUYWcpIHx8IG5ld1RhcmdldC0+aGFz
VGFnTmFtZShpZnJhbWVUYWcpKSA/IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4o
bmV3VGFyZ2V0KS0+Y29udGVudEZyYW1lKCkgOiAwOwotICAgICAgICAgICAgaWYgKGZyYW1lKQot
ICAgICAgICAgICAgICAgIGFjY2VwdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlRHJh
Z0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYWNjZXB0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdvdmVyRXZl
bnQsIG5ld1RhcmdldCwgZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KG5ld1RhcmdldCkKKyAgICAgICAgICAgIGFjY2VwdCA9IGhhbmRsZURyYWdBbmREcm9wRm9yVGFy
Z2V0KFVwZGF0ZURyYWdBbmREcm9wLCBuZXdUYXJnZXQsIGV2ZW50TmFtZXMoKS5kcmFnb3ZlckV2
ZW50LCBldmVudCwgY2xpcGJvYXJkKTsKICAgICB9CiAgICAgbV9kcmFnVGFyZ2V0ID0gbmV3VGFy
Z2V0OwogCkBAIC0xNTYwLDI4ICsxNTczLDE2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVE
cmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQqCiAK
IHZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQqIGNsaXBib2FyZCkKIHsKLSAgICBpZiAobV9kcmFnVGFy
Z2V0KSB7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IChtX2RyYWdUYXJnZXQtPmhhc1RhZ05hbWUo
ZnJhbWVUYWcpIHx8IG1fZHJhZ1RhcmdldC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSAKLSAgICAg
ICAgICAgICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPiht
X2RyYWdUYXJnZXQuZ2V0KCkpLT5jb250ZW50RnJhbWUoKSA6IDA7Ci0gICAgICAgIGlmIChmcmFt
ZSkKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Y2FuY2VsRHJhZ0FuZERyb3Ao
ZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpc3BhdGNoRHJh
Z0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnbGVhdmVFdmVudCwgbV9kcmFnVGFyZ2V0LmdldCgpLCBl
dmVudCwgY2xpcGJvYXJkKTsKLSAgICB9CisgICAgaWYgKG1fZHJhZ1RhcmdldCkKKyAgICAgICAg
aGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoQ2FuY2VsRHJhZ0FuZERyb3AsIG1fZHJhZ1Rhcmdl
dC5nZXQoKSwgZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCBldmVudCwgY2xpcGJvYXJkKTsK
ICAgICBjbGVhckRyYWdTdGF0ZSgpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6cGVyZm9ybURy
YWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCogY2xp
cGJvYXJkKQogewogICAgIGJvb2wgYWNjZXB0ID0gZmFsc2U7Ci0gICAgaWYgKG1fZHJhZ1Rhcmdl
dCkgewotICAgICAgICBGcmFtZSogZnJhbWUgPSAobV9kcmFnVGFyZ2V0LT5oYXNUYWdOYW1lKGZy
YW1lVGFnKSB8fCBtX2RyYWdUYXJnZXQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgCi0gICAgICAg
ICAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4obV9k
cmFnVGFyZ2V0LmdldCgpKS0+Y29udGVudEZyYW1lKCkgOiAwOwotICAgICAgICBpZiAoZnJhbWUp
Ci0gICAgICAgICAgICBhY2NlcHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnBlcmZvcm1EcmFn
QW5kRHJvcChldmVudCwgY2xpcGJvYXJkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWNj
ZXB0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyb3BFdmVudCwgbV9kcmFnVGFy
Z2V0LmdldCgpLCBldmVudCwgY2xpcGJvYXJkKTsKLSAgICB9CisgICAgaWYgKG1fZHJhZ1Rhcmdl
dCkKKyAgICAgICAgYWNjZXB0ID0gaGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoUGVyZm9ybURy
YWdBbmREcm9wLCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50TmFtZXMoKS5kcm9wRXZlbnQsIGV2
ZW50LCBjbGlwYm9hcmQpOwogICAgIGNsZWFyRHJhZ1N0YXRlKCk7CiAgICAgcmV0dXJuIGFjY2Vw
dDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAwMjIxMzk3Li5lNzU2ZTBiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCkBAIC0xOTQsNiArMTk0LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQorICAgIGVudW0gRHJhZ0FuZERyb3BIYW5kbGVUeXBlIHsKKyAgICAgICAg
VXBkYXRlRHJhZ0FuZERyb3AsCisgICAgICAgIENhbmNlbERyYWdBbmREcm9wLAorICAgICAgICBQ
ZXJmb3JtRHJhZ0FuZERyb3AKKyAgICB9OworCiAgICAgc3RydWN0IEV2ZW50SGFuZGxlckRyYWdT
dGF0ZSB7CiAgICAgICAgIFJlZlB0cjxOb2RlPiBtX2RyYWdTcmM7IC8vIGVsZW1lbnQgdGhhdCBt
YXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUKICAgICAg
ICAgYm9vbCBtX2RyYWdTcmNJc0xpbms7CkBAIC0yMDYsNiArMjEyLDggQEAgcHJpdmF0ZToKICAg
ICB9OwogICAgIHN0YXRpYyBFdmVudEhhbmRsZXJEcmFnU3RhdGUmIGRyYWdTdGF0ZSgpOwogICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgVGV4dERyYWdEZWxheTsKKworICAgIGJvb2wgaGFuZGxlRHJh
Z0FuZERyb3BGb3JUYXJnZXQoRHJhZ0FuZERyb3BIYW5kbGVUeXBlLCBOb2RlKiB0YXJnZXQsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBD
bGlwYm9hcmQqKTsKICAgICAKICAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gY3JlYXRlRHJhZ2dp
bmdDbGlwYm9hcmQoKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQo=
</data>
<flag name="review"
          id="22950"
          type_id="1"
          status="-"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="22951"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42498</attachid>
            <date>2009-11-04 11:11:20 -0800</date>
            <delta_ts>2009-11-04 16:11:35 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>30469_3</filename>
            <type>text/plain</type>
            <size>11340</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYTNjODI3Li5lNmEwMDU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMTEt
MDQgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHRoZSBkcmFnIGV2ZW50IGJ1YmJsaW5n
IG9uIGRpZmZlcmVudCB0YXJnZXRzOgorICAgICAgICAtIGlmcmFtZSB3aXRoIGludmFsaWQgc291
cmNlCisgICAgICAgIC0gaWZyYW1lIHdpdGggdmFsaWQgc291cmNlCisgICAgICAgIC0gbm9uLWlm
cmFtZSBkcm9wcGFibGUgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA0NjkKKworICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9idWJibGUt
ZHJhZy1ldmVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21p
c2MvYnViYmxlLWRyYWctZXZlbnRzLmh0bWw6IEFkZGVkLgorCiAyMDA5LTExLTAzICBCcmFkbGV5
IEdyZWVuICA8YnJnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkg
VGl0b3YuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYnViYmxlLWRy
YWctZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9idWJi
bGUtZHJhZy1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmYxMDU2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvYnViYmxlLWRyYWctZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMDogTm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJj
ZTogZmlsZToKK1RoaXMgcGFnZSB0ZXN0cyB0aGUgZHJhZyBldmVudCBidWJibGluZyB3aXRoIHZh
bGlkIGFuZCBpbnZhbGlkIHRhcmdldHMuCisKKworCisKK0RyYWcgaGVyZS4KK1Rlc3RzIHRoYXQg
d2UgZG9uJ3QgYnViYmxlIHVwIHRoZSBldmVudHMgaWYgd2UgZHJhZyBzb21ldGhpbmcgdG8gYW4g
aWZyYW1lIHRoYXQgaGFzIGFuIGludmFsaWQgc291cmNlCitUZXN0cyB0aGF0IHdlIGRvbid0IGJ1
YmJsZSB1cCB0aGUgZXZlbnRzIGlmIHdlIGRyYWcgc29tZXRoaW5nIHRvIGFuIGlmcmFtZSB0aGF0
IGhhcyBhIHZhbGlkIHNvdXJjZQorVGVzdHMgdGhhdCB3ZSBidWJibGUgdXAgdGhlIGV2ZW50cyBp
ZiB3ZSBkcmFnIHNvbWV0aGluZyB0byBhIG5vbi1pZnJhbWUgdGFyZ2V0CitvbmRyYWdlbnRlcgor
b25kcmFnb3Zlcgorb25kcm9wCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9idWJibGUtZHJhZy1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9idWJibGUtZHJhZy1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5hYWUwZmMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2J1YmJsZS1kcmFnLWV2ZW50cy5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzxoZWFkPgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZyIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZyArICJcbiIpKTsK
K30KKworZnVuY3Rpb24gdGVzdERyYWdFdmVudEJ1YmJsaW5nKGRyYWdUYXJnZXRJZCwgZHJhZ1Rh
cmdldFBhcmVudElkKQoreworICAgIHZhciBkcmFnVGFyZ2V0UGFyZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoZHJhZ1RhcmdldFBhcmVudElkKTsKKyAgICBkcmFnVGFyZ2V0UGFyZW50Lm9u
ZHJhZ2VudGVyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGxvZygib25kcmFnZW50ZXIiKTsKKyAg
ICB9CisgICAgZHJhZ1RhcmdldFBhcmVudC5vbmRyYWdvdmVyID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIGxvZygib25kcmFnb3ZlciIpOworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAg
Ly8gQ2FuY2VsIHRoZSBkcmFnLCBzbyB3ZSBnZXQgdGhlIGRyb3AuCisgICAgfQorICAgIGRyYWdU
YXJnZXRQYXJlbnQub25kcmFnbGVhdmUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgbG9nKCJvbmRy
YWdsZWF2ZSIpOworICAgIH0KKyAgICBkcmFnVGFyZ2V0UGFyZW50Lm9uZHJvcCA9IGZ1bmN0aW9u
KCkgeworICAgICAgIGxvZygib25kcm9wIik7CisgICAgfQorCisgICAgdmFyIGFiZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJhYmUiKTsKKyAgICB2YXIgZHJhZ1RhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGRyYWdUYXJnZXRJZCk7CisKKyAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhhYmUub2Zmc2V0TGVmdCArIDUwLCBhYmUub2Zmc2V0VG9wICsgNTApOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgLy8g
TGVhcCBmb3J3YXJkIHNvIHRoYXQgdGhlIG5leHQgbW91c2VEb3duIGRvZXNuJ3QgdHJpZ2dlciBh
IHRyaXBsZSBjbGljay4KKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMjAwKTsKKworICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIC8vIExlYXAgZm9yd2FyZCBzbyB0aGF0IHRo
ZSBtb3VzZSBtb3ZlbWVudCBjYXVzZXMgYSBkcmFnIGluc3RlYWQgb2Ygc2VsZWN0aW9uIGNyZWF0
aW9uLgorICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhkcmFnVGFyZ2V0Lm9mZnNldExlZnQgKyAxLCBkcmFnVGFyZ2V0Lm9mZnNl
dFRvcCArIDEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKword2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uICgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOyAKKworICAgIGxvZygi
VGVzdHMgdGhhdCB3ZSBkb24ndCBidWJibGUgdXAgdGhlIGV2ZW50cyBpZiB3ZSBkcmFnIHNvbWV0
aGluZyB0byBhbiBpZnJhbWUgdGhhdCBoYXMgYW4gaW52YWxpZCBzb3VyY2UiKTsKKyAgICB0ZXN0
RHJhZ0V2ZW50QnViYmxpbmcoImludmFsaWRJZnJhbWVEcmFnVGFyZ2V0UGFyZW50IiwgImludmFs
aWRJZnJhbWVEcmFnVGFyZ2V0Iik7CisKKyAgICBsb2coIlRlc3RzIHRoYXQgd2UgZG9uJ3QgYnVi
YmxlIHVwIHRoZSBldmVudHMgaWYgd2UgZHJhZyBzb21ldGhpbmcgdG8gYW4gaWZyYW1lIHRoYXQg
aGFzIGEgdmFsaWQgc291cmNlIik7CisgICAgdGVzdERyYWdFdmVudEJ1YmJsaW5nKCJ2YWxpZElm
cmFtZURyYWdUYXJnZXRQYXJlbnQiLCAidmFsaWRJZnJhbWVEcmFnVGFyZ2V0Iik7CisKKyAgICBs
b2coIlRlc3RzIHRoYXQgd2UgYnViYmxlIHVwIHRoZSBldmVudHMgaWYgd2UgZHJhZyBzb21ldGhp
bmcgdG8gYSBub24taWZyYW1lIHRhcmdldCIpOworICAgIHRlc3REcmFnRXZlbnRCdWJibGluZygi
dmFsaWRTcGFuRHJhZ1RhcmdldFBhcmVudCIsICJ2YWxpZFNwYW5EcmFnVGFyZ2V0Iik7CisKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKworPHA+VGhpcyBwYWdlIHRlc3RzIHRoZSBkcmFnIGV2ZW50IGJ1YmJsaW5nIHdpdGggdmFs
aWQgYW5kIGludmFsaWQgdGFyZ2V0cy48L3A+Cis8aW1nIGlkPSJhYmUiIHNyYz0iaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9hYmUucG5nIj4KKzxkaXYgaWQ9ImludmFs
aWRJZnJhbWVEcmFnVGFyZ2V0UGFyZW50Ij4KKzxpZnJhbWUgaWQ9ImludmFsaWRJZnJhbWVEcmFn
VGFyZ2V0IiBzcmM9ImZpbGU6Ij48L2lmcmFtZT4KKzwvZGl2PgorPGRpdiBpZD0idmFsaWRJZnJh
bWVEcmFnVGFyZ2V0UGFyZW50Ij4KKzxpZnJhbWUgaWQ9InZhbGlkSWZyYW1lRHJhZ1RhcmdldCIg
c3JjPSJkYXRhOnRleHQvaHRtbCw8Ym9keT5Xb3JraW5nPC9ib2R5PiI+PC9pZnJhbWU+Cis8L2Rp
dj4KKzxkaXYgY29udGVudEVkaXRhYmxlIGlkPSJ2YWxpZFNwYW5EcmFnVGFyZ2V0UGFyZW50Ij4K
KzxzcGFuIGlkPSJ2YWxpZFNwYW5EcmFnVGFyZ2V0Ij5EcmFnIGhlcmUuPC9zcGFuPgorPC9kaXY+
Cis8cHJlIGlkPSJsb2ciPjwvcHJlPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMjM3NzRkLi45YjU5MzI2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDA5LTExLTA0ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaG91bGQgbm90IGJ1YmJsZSB1
cCBldmVudHMgaWYgd2UgZHJhZyBzb21ldGhpbmcgdG8gYW4gaWZyYW1lIHRoYXQKKyAgICAgICAg
aGFzIGFuIGludmFsaWQgc291cmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA0NjkKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL21pc2MvYnVi
YmxlLWRyYWctZXZlbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjopOgorCiAyMDA5LTExLTAzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNGU5
N2FiYS4uYmRhNTVhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE1MDgsNiArMTUwOCwzMSBA
QCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIE5vZGUqIGRyYWdUYQogICAgIHJldHVybiBtZS0+ZGVmYXVsdFByZXZlbnRl
ZCgpOwogfQogCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQo
RHJhZ0FuZERyb3BIYW5kbGVUeXBlIHR5cGUsIE5vZGUqIHRhcmdldCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2Fy
ZCogY2xpcGJvYXJkKQoreworICAgIGJvb2wgYWNjZXB0ID0gZmFsc2U7CisKKyAgICBpZiAodGFy
Z2V0LT5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8fCB0YXJnZXQtPmhhc1RhZ05hbWUoaWZyYW1lVGFn
KSkgeworICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50
QmFzZSo+KHRhcmdldCktPmNvbnRlbnRGcmFtZSgpOworICAgICAgICBpZiAoZnJhbWUpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgVXBkYXRlRHJh
Z0FuZERyb3A6CisgICAgICAgICAgICAgICAgICAgIGFjY2VwdCA9IGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ2FuY2VsRHJhZ0FuZERyb3A6Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Y2FuY2VsRHJhZ0FuZERy
b3AoZXZlbnQsIGNsaXBib2FyZCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgUGVyZm9ybURyYWdBbmREcm9wOgorICAgICAgICAgICAgICAgICAgICBh
Y2NlcHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwg
Y2xpcGJvYXJkKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgYWNjZXB0ID0gZGlzcGF0Y2hEcmFnRXZlbnQo
ZXZlbnRUeXBlLCB0YXJnZXQsIGV2ZW50LCBjbGlwYm9hcmQpOworCisgICAgcmV0dXJuIGFjY2Vw
dDsKK30KKwogYm9vbCBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIENsaXBib2FyZCogY2xpcGJvYXJkKQogewogICAgIGJvb2wg
YWNjZXB0ID0gZmFsc2U7CkBAIC0xNTI5LDI5ICsxNTU0LDE0IEBAIGJvb2wgRXZlbnRIYW5kbGVy
Ojp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlw
Ym9hcmQqCiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIG9yZGVyaW5nIHdhcyBleHBsaWNpdGx5IGNo
b3NlbiB0byBtYXRjaCBXaW5JRS4gSG93ZXZlciwKICAgICAgICAgLy8gaXQgaXMgc29tZXRpbWVz
IGluY29ycmVjdCB3aGVuIGRyYWdnaW5nIHdpdGhpbiBzdWJmcmFtZXMsIGFzIHNlZW4gd2l0aAog
ICAgICAgICAvLyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWluLWZyYW1lcy5odG1sLgot
ICAgICAgICBpZiAobmV3VGFyZ2V0KSB7Ci0gICAgICAgICAgICBGcmFtZSogZnJhbWUgPSAobmV3
VGFyZ2V0LT5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBuZXdUYXJnZXQtPmhhc1RhZ05hbWUoaWZy
YW1lVGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG5ld1RhcmdldCkt
PmNvbnRlbnRGcmFtZSgpIDogMDsKLSAgICAgICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAg
ICAgICBhY2NlcHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZURyYWdBbmREcm9wKGV2
ZW50LCBjbGlwYm9hcmQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFjY2Vw
dCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCwgbmV3VGFy
Z2V0LCBldmVudCwgY2xpcGJvYXJkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobmV3VGFyZ2V0
KQorICAgICAgICAgICAgYWNjZXB0ID0gaGFuZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoVXBkYXRl
RHJhZ0FuZERyb3AsIG5ld1RhcmdldCwgZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCBldmVu
dCwgY2xpcGJvYXJkKTsKIAotICAgICAgICBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0gICAgICAgICAg
ICBGcmFtZSogZnJhbWUgPSAobV9kcmFnVGFyZ2V0LT5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBt
X2RyYWdUYXJnZXQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MRnJh
bWVFbGVtZW50QmFzZSo+KG1fZHJhZ1RhcmdldC5nZXQoKSktPmNvbnRlbnRGcmFtZSgpIDogMDsK
LSAgICAgICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgICAgICBhY2NlcHQgPSBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBjbGlwYm9hcmQpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFt
ZXMoKS5kcmFnbGVhdmVFdmVudCwgbV9kcmFnVGFyZ2V0LmdldCgpLCBldmVudCwgY2xpcGJvYXJk
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAobV9kcmFnVGFyZ2V0KQorICAgICAgICAgICAgaGFu
ZGxlRHJhZ0FuZERyb3BGb3JUYXJnZXQoVXBkYXRlRHJhZ0FuZERyb3AsIG1fZHJhZ1RhcmdldC5n
ZXQoKSwgZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCBldmVudCwgY2xpcGJvYXJkKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBpZiAobmV3VGFyZ2V0KSB7Ci0gICAgICAgICAgICBGcmFtZSog
ZnJhbWUgPSAobmV3VGFyZ2V0LT5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBuZXdUYXJnZXQtPmhh
c1RhZ05hbWUoaWZyYW1lVGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+
KG5ld1RhcmdldCktPmNvbnRlbnRGcmFtZSgpIDogMDsKLSAgICAgICAgICAgIGlmIChmcmFtZSkK
LSAgICAgICAgICAgICAgICBhY2NlcHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZURy
YWdBbmREcm9wKGV2ZW50LCBjbGlwYm9hcmQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGFjY2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnb3ZlckV2
ZW50LCBuZXdUYXJnZXQsIGV2ZW50LCBjbGlwYm9hcmQpOwotICAgICAgICB9CisgICAgICAgIGlm
IChuZXdUYXJnZXQpCisgICAgICAgICAgICBhY2NlcHQgPSBoYW5kbGVEcmFnQW5kRHJvcEZvclRh
cmdldChVcGRhdGVEcmFnQW5kRHJvcCwgbmV3VGFyZ2V0LCBldmVudE5hbWVzKCkuZHJhZ292ZXJF
dmVudCwgZXZlbnQsIGNsaXBib2FyZCk7CiAgICAgfQogICAgIG1fZHJhZ1RhcmdldCA9IG5ld1Rh
cmdldDsKIApAQCAtMTU2MCwyOCArMTU3MCwxNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRl
RHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKgog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCiB7Ci0gICAgaWYgKG1fZHJhZ1Rh
cmdldCkgewotICAgICAgICBGcmFtZSogZnJhbWUgPSAobV9kcmFnVGFyZ2V0LT5oYXNUYWdOYW1l
KGZyYW1lVGFnKSB8fCBtX2RyYWdUYXJnZXQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgCi0gICAg
ICAgICAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4o
bV9kcmFnVGFyZ2V0LmdldCgpKS0+Y29udGVudEZyYW1lKCkgOiAwOwotICAgICAgICBpZiAoZnJh
bWUpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmNhbmNlbERyYWdBbmREcm9w
KGV2ZW50LCBjbGlwYm9hcmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkaXNwYXRjaERy
YWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsIG1fZHJhZ1RhcmdldC5nZXQoKSwg
ZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgfQorICAgIGlmIChtX2RyYWdUYXJnZXQpCisgICAgICAg
IGhhbmRsZURyYWdBbmREcm9wRm9yVGFyZ2V0KENhbmNlbERyYWdBbmREcm9wLCBtX2RyYWdUYXJn
ZXQuZ2V0KCksIGV2ZW50TmFtZXMoKS5kcmFnbGVhdmVFdmVudCwgZXZlbnQsIGNsaXBib2FyZCk7
CiAgICAgY2xlYXJEcmFnU3RhdGUoKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBlcmZvcm1E
cmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQqIGNs
aXBib2FyZCkKIHsKICAgICBib29sIGFjY2VwdCA9IGZhbHNlOwotICAgIGlmIChtX2RyYWdUYXJn
ZXQpIHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gKG1fZHJhZ1RhcmdldC0+aGFzVGFnTmFtZShm
cmFtZVRhZykgfHwgbV9kcmFnVGFyZ2V0LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIAotICAgICAg
ICAgICAgICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG1f
ZHJhZ1RhcmdldC5nZXQoKSktPmNvbnRlbnRGcmFtZSgpIDogMDsKLSAgICAgICAgaWYgKGZyYW1l
KQotICAgICAgICAgICAgYWNjZXB0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5wZXJmb3JtRHJh
Z0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFj
Y2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcm9wRXZlbnQsIG1fZHJhZ1Rh
cmdldC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgfQorICAgIGlmIChtX2RyYWdUYXJn
ZXQpCisgICAgICAgIGFjY2VwdCA9IGhhbmRsZURyYWdBbmREcm9wRm9yVGFyZ2V0KFBlcmZvcm1E
cmFnQW5kRHJvcCwgbV9kcmFnVGFyZ2V0LmdldCgpLCBldmVudE5hbWVzKCkuZHJvcEV2ZW50LCBl
dmVudCwgY2xpcGJvYXJkKTsKICAgICBjbGVhckRyYWdTdGF0ZSgpOwogICAgIHJldHVybiBhY2Nl
cHQ7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggMDIyMTM5Ny4uZTc1NmUwYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaApAQCAtMTk0LDYgKzE5NCwxMiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKKyAgICBlbnVtIERyYWdBbmREcm9wSGFuZGxlVHlwZSB7CisgICAgICAg
IFVwZGF0ZURyYWdBbmREcm9wLAorICAgICAgICBDYW5jZWxEcmFnQW5kRHJvcCwKKyAgICAgICAg
UGVyZm9ybURyYWdBbmREcm9wCisgICAgfTsKKwogICAgIHN0cnVjdCBFdmVudEhhbmRsZXJEcmFn
U3RhdGUgewogICAgICAgICBSZWZQdHI8Tm9kZT4gbV9kcmFnU3JjOyAvLyBlbGVtZW50IHRoYXQg
bWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBtb3VzZSBnZXN0dXJlCiAgICAg
ICAgIGJvb2wgbV9kcmFnU3JjSXNMaW5rOwpAQCAtMjA2LDYgKzIxMiw4IEBAIHByaXZhdGU6CiAg
ICAgfTsKICAgICBzdGF0aWMgRXZlbnRIYW5kbGVyRHJhZ1N0YXRlJiBkcmFnU3RhdGUoKTsKICAg
ICBzdGF0aWMgY29uc3QgZG91YmxlIFRleHREcmFnRGVsYXk7CisKKyAgICBib29sIGhhbmRsZURy
YWdBbmREcm9wRm9yVGFyZ2V0KERyYWdBbmREcm9wSGFuZGxlVHlwZSwgTm9kZSogdGFyZ2V0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
Q2xpcGJvYXJkKik7CiAgICAgCiAgICAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IGNyZWF0ZURyYWdn
aW5nQ2xpcGJvYXJkKCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkK
</data>
<flag name="review"
          id="24038"
          type_id="1"
          status="+"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="24039"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>