<?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>96746</bug_id>
          
          <creation_ts>2012-09-14 03:17:19 -0700</creation_ts>
          <short_desc>Web Inspector: [WebGL] First step towards 2D canvas instrumentation in injected script</short_desc>
          <delta_ts>2012-09-24 09:59:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</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>
          
          <blocked>97203</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>720507</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-14 03:17:19 -0700</bug_when>
    <thetext>First step towards the 2D canvas instrumentation from the WebGL injected script module side.
Next: support this from the inspector instrumentation C++ code.
Next: rename [WebGL] to [Canvas]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720512</commentid>
    <comment_count>1</comment_count>
      <attachid>164087</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-14 03:20:11 -0700</bug_when>
    <thetext>Created attachment 164087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720517</commentid>
    <comment_count>2</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-14 03:25:07 -0700</bug_when>
    <thetext>Note for reviewers:
- Canvas 2D context specs: http://www.w3.org/TR/2dcontext/
- Excerpts about the 2D context state:

Each context maintains a stack of drawing states. Drawing states consist of:

- The current transformation matrix.
- The current clipping region.
- The current values of the following attributes:
    strokeStyle, fillStyle, globalAlpha, lineWidth, lineCap, lineJoin, miterLimit, shadowOffsetX, shadowOffsetY, shadowBlur, shadowColor, globalCompositeOperation, font, textAlign, textBaseline.
- The current default path is NOT part of the drawing state. The current default path is persistent, and can only be reset using the beginPath() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723355</commentid>
    <comment_count>3</comment_count>
      <attachid>164087</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-19 00:53:49 -0700</bug_when>
    <thetext>Comment on attachment 164087
Patch

Please explain what you are doing here in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723432</commentid>
    <comment_count>4</comment_count>
      <attachid>164706</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-19 03:29:33 -0700</bug_when>
    <thetext>Created attachment 164706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724423</commentid>
    <comment_count>5</comment_count>
      <attachid>164893</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-20 04:50:50 -0700</bug_when>
    <thetext>Created attachment 164893
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726682</commentid>
    <comment_count>6</comment_count>
      <attachid>165387</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-24 08:25:45 -0700</bug_when>
    <thetext>Created attachment 165387
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726776</commentid>
    <comment_count>7</comment_count>
      <attachid>165387</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 09:49:58 -0700</bug_when>
    <thetext>Comment on attachment 165387
Rebased

Rejecting attachment 165387 from commit-queue.

aandrey@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726789</commentid>
    <comment_count>8</comment_count>
      <attachid>165387</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 09:59:00 -0700</bug_when>
    <thetext>Comment on attachment 165387
Rebased

Clearing flags on attachment: 165387

Committed r129383: &lt;http://trac.webkit.org/changeset/129383&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726790</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 09:59:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164087</attachid>
            <date>2012-09-14 03:20:11 -0700</date>
            <delta_ts>2012-09-19 03:29:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96746-20120914141942.patch</filename>
            <type>text/plain</type>
            <size>15979</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgxYjMxZjQwNzRlYzU0
MzJkMDA1YmJhNGFkZDI0MjlmODdlMWFjYS4uYWRiYmQyYTNmNTBlZThiOTU0ODJkOTdjNGVmZGZh
MjhjMDhhNTZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gRmlyc3Qgc3RlcCB0b3dhcmRzIDJEIGNhbnZhcyBpbnN0cnVtZW50YXRpb24g
aW4gaW5qZWN0ZWQgc2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05Njc0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZpcnN0IHN0ZXAgdG93YXJkcyB0aGUgMkQgY2FudmFzIGluc3RydW1lbnRhdGlv
biBmcm9tIHRoZSBXZWJHTCBpbmplY3RlZCBzY3JpcHQgbW9kdWxlIHNpZGUuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qczoKKyAgICAgICAg
KC4pOgorCiAyMDEyLTA5LTE0ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW0Zvcm1zXSBtdWx0aXBsZSBmaWVsZHMgdGltZSBpbnB1dCBVSSBzaG91bGQg
c2F2ZS9yZXN0b3JlIGl0cyB2YWx1ZSBldmVuIGlmIGl0IGhhcyBhbiBlbXB0eSBmaWVsZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9k
dWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2Vi
R0xNb2R1bGVTb3VyY2UuanMKaW5kZXggNjc4MGFmM2M0MTUyNWM5OGU3NmJkYjgwMzU3MGVlYzNi
OGNiNzdiMi4uMjZhZmVlYjU0ZmVmZDJkNGJiODc0NzAzZTM3MjFmYTQ4ZWJiMDY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVT
b3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2Vi
R0xNb2R1bGVTb3VyY2UuanMKQEAgLTc0Myw3ICs3NDMsNyBAQCBSZXNvdXJjZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBpZiAoaXNDYXB0dXJpbmcpIHsKICAgICAgICAgICAgICAgICB2YXIg
Y2FsbCA9IHdyYXBGdW5jdGlvbi5jYWxsKCk7CiAgICAgICAgICAgICAgICAgY2FsbC5zZXRTdGFj
a1RyYWNlKFN0YWNrVHJhY2UuY3JlYXRlKDEsIGFyZ3VtZW50cy5jYWxsZWUpKTsKLSAgICAgICAg
ICAgICAgICBtYW5hZ2VyLnJlcG9ydENhbGwoY2FsbCk7CisgICAgICAgICAgICAgICAgbWFuYWdl
ci5jYXB0dXJlQ2FsbChjYWxsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB3
cmFwRnVuY3Rpb24ucmVzdWx0KCk7CiAgICAgICAgIH07CkBAIC03NjcsNyArNzY3LDcgQEAgUmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9yaWdpbmFsRnVu
Y3Rpb24uYXBwbHkob3JpZ2luYWxPYmplY3QsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICB2YXIg
c3RhY2tUcmFjZSA9IFN0YWNrVHJhY2UuY3JlYXRlKDEsIGFyZ3VtZW50cy5jYWxsZWUpOwogICAg
ICAgICAgICAgdmFyIGNhbGwgPSBuZXcgQ2FsbChyZXNvdXJjZSwgZnVuY3Rpb25OYW1lLCBhcmd1
bWVudHMsIHJlc3VsdCwgc3RhY2tUcmFjZSk7Ci0gICAgICAgICAgICBtYW5hZ2VyLnJlcG9ydENh
bGwoY2FsbCk7CisgICAgICAgICAgICBtYW5hZ2VyLmNhcHR1cmVDYWxsKGNhbGwpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfTsKICAgICB9LApAQCAtODMzLDYgKzgzMywy
NyBAQCBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucHJvdG90eXBlID0gewogfQogCiAvKioKKyAqIEBw
YXJhbSB7IUZ1bmN0aW9ufSByZXNvdXJjZUNvbnN0cnVjdG9yCisgKiBAcmV0dXJuIHtGdW5jdGlv
bn0KKyAqLworUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZCA9IGZ1
bmN0aW9uKHJlc291cmNlQ29uc3RydWN0b3IpCit7CisgICAgLyoqIEB0aGlzIFJlc291cmNlLldy
YXBGdW5jdGlvbiAqLworICAgIHJldHVybiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
d3JhcHBlZE9iamVjdCA9IHRoaXMucmVzdWx0KCk7CisgICAgICAgIGlmICghd3JhcHBlZE9iamVj
dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IHJlc291
cmNlQ29uc3RydWN0b3Iod3JhcHBlZE9iamVjdCk7CisgICAgICAgIHZhciBtYW5hZ2VyID0gdGhp
cy5fcmVzb3VyY2UubWFuYWdlcigpOworICAgICAgICBpZiAobWFuYWdlcikKKyAgICAgICAgICAg
IG1hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHRoaXMub3ZlcnJp
ZGVSZXN1bHQocmVzb3VyY2UucHJveHlPYmplY3QoKSk7CisgICAgICAgIHJlc291cmNlLnB1c2hD
YWxsKHRoaXMuY2FsbCgpKTsKKyAgICB9Cit9CisKKy8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBA
cGFyYW0ge1Jlc291cmNlfSBvcmlnaW5hbFJlc291cmNlCiAgKiBAcGFyYW0ge09iamVjdH0gZGF0
YQpAQCAtODY3LDYgKzg4OCwxMCBAQCBSZXBsYXlhYmxlUmVzb3VyY2UucmVwbGF5ID0gZnVuY3Rp
b24ob2JqLCBjYWNoZSkKICAgICByZXR1cm4gKG9iaiBpbnN0YW5jZW9mIFJlcGxheWFibGVSZXNv
dXJjZSkgPyBvYmoucmVwbGF5KGNhY2hlKS53cmFwcGVkT2JqZWN0KCkgOiBvYmo7CiB9CiAKKy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBXZWJHTAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
KwogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtSZXNvdXJjZX0KQEAgLTEwMzMs
OCArMTA1OCwxMCBAQCBXZWJHTFRleHR1cmVSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBmcmFtZWJ1ZmZlclJlc291cmNlID0gZ2xSZXNvdXJjZS5jdXJyZW50QmluZGluZyhnbC5G
UkFNRUJVRkZFUik7CiAgICAgICAgIGlmIChmcmFtZWJ1ZmZlclJlc291cmNlKQogICAgICAgICAg
ICAgdGhpcy5wdXNoQ2FsbChuZXcgQ2FsbChnbFJlc291cmNlLCAiYmluZEZyYW1lYnVmZmVyIiwg
W2dsLkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlclJlc291cmNlXSkpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBjb25zb2xlLmVycm9yKCJBU1NFUlRfTk9UX1JFQUNIRUQ6IE5vIEZSQU1FQlVG
RkVSIGJvdW5kIHdoaWxlIGNhbGxpbmcgZ2wuIiArIGNhbGwuZnVuY3Rpb25OYW1lKCkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBjYXNlLgor
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQVNTRVJUX05PVF9SRUFDSEVEOiBDb3VsZCBub3Qg
cHJvcGVybHkgcHJvY2VzcyBhIGdsLiIgKyBjYWxsLmZ1bmN0aW9uTmFtZSgpICsgIiBjYWxsIHdo
aWxlIHRoZSBEUkFXSU5HIEJVRkZFUiBpcyBib3VuZC4iKTsKKyAgICAgICAgfQogICAgICAgICB0
aGlzLnB1c2hDYWxsKGNhbGwpOwogICAgIH0KIH0KQEAgLTEzNjksMTAgKzEzOTYsMTAgQEAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuZm9yT2JqZWN0ID0gZnVuY3Rpb24ob2JqKQogICAg
IHZhciByZXNvdXJjZSA9IFJlc291cmNlLmZvck9iamVjdChvYmopOwogICAgIGlmICghcmVzb3Vy
Y2UgfHwgcmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZSkK
ICAgICAgICAgcmV0dXJuIHJlc291cmNlOwotICAgIHZhciBjYWxsID0gcmVzb3VyY2UuY2FsbHMo
KTsKLSAgICBpZiAoIWNhbGwgfHwgIWNhbGwubGVuZ3RoKQorICAgIHZhciBjYWxscyA9IHJlc291
cmNlLmNhbGxzKCk7CisgICAgaWYgKCFjYWxscyB8fCAhY2FsbHMubGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gbnVsbDsKLSAgICByZXNvdXJjZSA9IGNhbGxbMF0ucmVzb3VyY2UoKTsKKyAgICByZXNv
dXJjZSA9IGNhbGxzWzBdLnJlc291cmNlKCk7CiAgICAgcmV0dXJuIChyZXNvdXJjZSBpbnN0YW5j
ZW9mIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlKSA/IHJlc291cmNlIDogbnVsbDsKIH0K
IApAQCAtMTU5Myw3ICsxNjIwLDcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UucHJv
dG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2xTdGF0ZS5B
Q1RJVkVfVEVYVFVSRSk7CiAKLSAgICAgICAgcmV0dXJuIFJlc291cmNlLnByb3RvdHlwZS5fZG9S
ZXBsYXlDYWxscy5jYWxsKHRoaXMsIGRhdGEsIGNhY2hlKTsKKyAgICAgICAgUmVzb3VyY2UucHJv
dG90eXBlLl9kb1JlcGxheUNhbGxzLmNhbGwodGhpcywgZGF0YSwgY2FjaGUpOwogICAgIH0sCiAK
ICAgICAvKioKQEAgLTE2NjEsMzMgKzE2ODgsMTMgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXdyYXBGdW5jdGlvbnMpIHsKICAgICAg
ICAgICAgIHdyYXBGdW5jdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogCi0gICAgICAgICAg
ICAvKioKLSAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lCi0gICAgICAg
ICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvdXJjZUNvbnN0cnVjdG9yCi0gICAgICAgICAg
ICAgKi8KLSAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKG1l
dGhvZE5hbWUsIHJlc291cmNlQ29uc3RydWN0b3IpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgLyoqIEB0aGlzIFJlc291cmNlLldyYXBGdW5jdGlvbiAqLwotICAgICAgICAgICAgICAg
IHdyYXBGdW5jdGlvbnNbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICB2YXIgd3JhcHBlZE9iamVjdCA9IHRoaXMucmVzdWx0KCk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghd3JhcHBlZE9iamVjdCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlID0gbmV3
IHJlc291cmNlQ29uc3RydWN0b3Iod3JhcHBlZE9iamVjdCk7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBtYW5hZ2VyID0gdGhpcy5fcmVzb3VyY2UubWFuYWdlcigpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAobWFuYWdlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIucmVnaXN0
ZXJSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVS
ZXN1bHQocmVzb3VyY2UucHJveHlPYmplY3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc291
cmNlLnB1c2hDYWxsKHRoaXMuY2FsbCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBjcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlQnVmZmVy
IiwgV2ViR0xCdWZmZXJSZXNvdXJjZSk7Ci0gICAgICAgICAgICBjcmVhdGVSZXNvdXJjZVdyYXBG
dW5jdGlvbigiY3JlYXRlU2hhZGVyIiwgV2ViR0xTaGFkZXJSZXNvdXJjZSk7Ci0gICAgICAgICAg
ICBjcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlUHJvZ3JhbSIsIFdlYkdMUHJvZ3Jh
bVJlc291cmNlKTsKLSAgICAgICAgICAgIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKCJjcmVh
dGVUZXh0dXJlIiwgV2ViR0xUZXh0dXJlUmVzb3VyY2UpOwotICAgICAgICAgICAgY3JlYXRlUmVz
b3VyY2VXcmFwRnVuY3Rpb24oImNyZWF0ZUZyYW1lYnVmZmVyIiwgV2ViR0xGcmFtZWJ1ZmZlclJl
c291cmNlKTsKLSAgICAgICAgICAgIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKCJjcmVhdGVS
ZW5kZXJidWZmZXIiLCBXZWJHTFJlbmRlcmJ1ZmZlclJlc291cmNlKTsKLSAgICAgICAgICAgIGNy
ZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKCJnZXRVbmlmb3JtTG9jYXRpb24iLCBSZXNvdXJjZSk7
CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVCdWZmZXIiXSA9IFJlc291cmNlLldy
YXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QoV2ViR0xCdWZmZXJSZXNvdXJjZSk7Cisg
ICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVTaGFkZXIiXSA9IFJlc291cmNlLldyYXBG
dW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QoV2ViR0xTaGFkZXJSZXNvdXJjZSk7CisgICAg
ICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVQcm9ncmFtIl0gPSBSZXNvdXJjZS5XcmFwRnVu
Y3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFdlYkdMUHJvZ3JhbVJlc291cmNlKTsKKyAgICAg
ICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVRleHR1cmUiXSA9IFJlc291cmNlLldyYXBGdW5j
dGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QoV2ViR0xUZXh0dXJlUmVzb3VyY2UpOworICAgICAg
ICAgICAgd3JhcEZ1bmN0aW9uc1siY3JlYXRlRnJhbWVidWZmZXIiXSA9IFJlc291cmNlLldyYXBG
dW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QoV2ViR0xGcmFtZWJ1ZmZlclJlc291cmNlKTsK
KyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVJlbmRlcmJ1ZmZlciJdID0gUmVzb3Vy
Y2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJHTFJlbmRlcmJ1ZmZlclJl
c291cmNlKTsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImdldFVuaWZvcm1Mb2NhdGlvbiJd
ID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7
CiAKICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhv
ZE5hbWUKQEAgLTE3NTMsNiArMTc2MCwyMjcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3Vy
Y2UucHJvdG90eXBlID0gewogCiBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5wcm90b3R5
cGUuX19wcm90b19fID0gUmVzb3VyY2UucHJvdG90eXBlOwogCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworLy8gMkQgQ2FudmFzCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1Jlc291cmNlfQorICogQHBhcmFtIHtDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkR9IGNvbnRleHQKKyAqIEBwYXJhbSB7RnVuY3Rpb259IHJlcGxheUNvbnRl
eHRDYWxsYmFjaworICovCitmdW5jdGlvbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJj
ZShjb250ZXh0LCByZXBsYXlDb250ZXh0Q2FsbGJhY2spCit7CisgICAgUmVzb3VyY2UuY2FsbCh0
aGlzLCBjb250ZXh0KTsKKyAgICB0aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJhY2sgPSByZXBsYXlD
b250ZXh0Q2FsbGJhY2s7CisgICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrID0gW107Cit9CisKKy8q
KgorICogQGNvbnN0CisgKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59CisgKi8KK0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRFJlc291cmNlLkF0dHJpYnV0ZVByb3BlcnRpZXMgPSBbCisgICAgInN0cm9r
ZVN0eWxlIiwKKyAgICAiZmlsbFN0eWxlIiwKKyAgICAiZ2xvYmFsQWxwaGEiLAorICAgICJsaW5l
V2lkdGgiLAorICAgICJsaW5lQ2FwIiwKKyAgICAibGluZUpvaW4iLAorICAgICJtaXRlckxpbWl0
IiwKKyAgICAic2hhZG93T2Zmc2V0WCIsCisgICAgInNoYWRvd09mZnNldFkiLAorICAgICJzaGFk
b3dCbHVyIiwKKyAgICAic2hhZG93Q29sb3IiLAorICAgICJnbG9iYWxDb21wb3NpdGVPcGVyYXRp
b24iLAorICAgICJmb250IiwKKyAgICAidGV4dEFsaWduIiwKKyAgICAidGV4dEJhc2VsaW5lIgor
XTsKKworLyoqCisgKiBAY29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqLworQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMgPSBbCisgICAgImJlZ2lu
UGF0aCIsCisgICAgIm1vdmVUbyIsCisgICAgImNsb3NlUGF0aCIsCisgICAgImxpbmVUbyIsCisg
ICAgInF1YWRyYXRpY0N1cnZlVG8iLAorICAgICJiZXppZXJDdXJ2ZVRvIiwKKyAgICAiYXJjVG8i
LAorICAgICJhcmMiLAorICAgICJyZWN0IgorXTsKKworLyoqCisgKiBAY29uc3QKKyAqIEB0eXBl
IHtBcnJheS48c3RyaW5nPn0KKyAqLworQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2Uu
VHJhbnNmb3JtYXRpb25NYXRyaXhNZXRob2RzID0gWworICAgICJzY2FsZSIsCisgICAgInJvdGF0
ZSIsCisgICAgInRyYW5zbGF0ZSIsCisgICAgInRyYW5zZm9ybSIsCisgICAgInNldFRyYW5zZm9y
bSIKK107CisKK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsK
KyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YQor
ICAgICAqIEBwYXJhbSB7Q2FjaGV9IGNhY2hlCisgICAgICovCisgICAgX3BvcHVsYXRlUmVwbGF5
YWJsZURhdGE6IGZ1bmN0aW9uKGRhdGEsIGNhY2hlKQorICAgIHsKKyAgICAgICAgZGF0YS5yZXBs
YXlDb250ZXh0Q2FsbGJhY2sgPSB0aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJhY2s7CisgICAgICAg
IGRhdGEuYXR0cmlidXRlc1N0YWNrID0gdGhpcy5fYXR0cmlidXRlc1N0YWNrLnNsaWNlKDApOwor
ICAgICAgICBkYXRhLmN1cnJlbnRBdHRyaWJ1dGVzID0gdGhpcy5fY3VycmVudEF0dHJpYnV0ZXNT
dGF0ZSgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFy
YW0ge09iamVjdH0gZGF0YQorICAgICAqIEBwYXJhbSB7Q2FjaGV9IGNhY2hlCisgICAgICovCisg
ICAgX2RvUmVwbGF5Q2FsbHM6IGZ1bmN0aW9uKGRhdGEsIGNhY2hlKQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVwbGF5Q29udGV4dENhbGxiYWNrID0gZGF0YS5yZXBsYXlDb250ZXh0Q2FsbGJhY2s7
CisgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNTdGFjayA9IGRhdGEuYXR0cmlidXRlc1N0YWNrLnNs
aWNlKDApOworCisgICAgICAgIHZhciBjdHggPSBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KHRoaXMu
X3JlcGxheUNvbnRleHRDYWxsYmFjaygpKTsKKyAgICAgICAgdGhpcy5zZXRXcmFwcGVkT2JqZWN0
KGN0eCk7CisKKyAgICAgICAgdmFyIHNhdmVDYWxscyA9IDA7CisgICAgICAgIGZvciAodmFyIGkg
PSAwLCBuID0gZGF0YS5jYWxscy5sZW5ndGg7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIHZh
ciByZXBsYXlhYmxlQ2FsbCA9IGRhdGEuY2FsbHNbaV07CisgICAgICAgICAgICBpZiAocmVwbGF5
YWJsZUNhbGwuZnVuY3Rpb25OYW1lKCkgPT09ICJzYXZlIikgeworICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHNhdmVDYWxscyA8IHRoaXMuX2F0dHJpYnV0ZXNTdGFjay5sZW5ndGgsICJT
aXplIG9mIGF0dHJpYnV0ZXMgc3RhY2sgaXMgbGVzcyB0aGFuICdzYXZlJyBjYWxscyIpOworICAg
ICAgICAgICAgICAgIHRoaXMuX2FwcGx5QXR0cmlidXRlc1N0YXRlKHRoaXMuX2F0dHJpYnV0ZXNT
dGFja1tzYXZlQ2FsbHMrK10pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5fY2Fs
bHMucHVzaChyZXBsYXlhYmxlQ2FsbC5yZXBsYXkoY2FjaGUpKTsKKyAgICAgICAgfQorICAgICAg
ICBjb25zb2xlLmFzc2VydChzYXZlQ2FsbHMgPT09IHRoaXMuX2F0dHJpYnV0ZXNTdGFjay5sZW5n
dGgsICJTaXplIG9mIGF0dHJpYnV0ZXMgc3RhY2sgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBudW1i
ZXIgb2YgJ3NhdmUnIGNhbGxzIik7CisgICAgICAgIHRoaXMuX2FwcGx5QXR0cmlidXRlc1N0YXRl
KGRhdGEuY3VycmVudEF0dHJpYnV0ZXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0NhbGx9IGNhbGwKKyAgICAgKi8KKyAgICBwdXNoQ2FsbF9zZXRUcmFuc2Zvcm06IGZ1bmN0
aW9uKGNhbGwpCisgICAgeworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9ic29sZXRlIHRyYW5z
Zm9ybSBtYXRyaXggbWV0aG9kcy4KKyAgICAgICAgdGhpcy5wdXNoQ2FsbChjYWxsKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDYWxsfSBjYWxsCisgICAgICovCisgICAgcHVz
aENhbGxfYmVnaW5QYXRoOiBmdW5jdGlvbihjYWxsKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSBvYnNvbGV0ZSBwYXRoIG1ldGhvZHMuCisgICAgICAgIHRoaXMucHVzaENhbGwoY2Fs
bCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FsbH0gY2FsbAorICAgICAq
LworICAgIHB1c2hDYWxsX3NhdmU6IGZ1bmN0aW9uKGNhbGwpCisgICAgeworICAgICAgICB0aGlz
Ll9hdHRyaWJ1dGVzU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50QXR0cmlidXRlc1N0YXRlKCkpOwor
ICAgICAgICB0aGlzLnB1c2hDYWxsKGNhbGwpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge0NhbGx9IGNhbGwKKyAgICAgKi8KKyAgICBwdXNoQ2FsbF9yZXN0b3JlOiBmdW5jdGlv
bihjYWxsKQorICAgIHsKKyAgICAgICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrLnBvcCgpOworICAg
ICAgICAvLyBGSVhNRTogUmVtb3ZlIG9ic29sZXRlIGNsaXAsc2F2ZSBtZXRob2RzLgorICAgICAg
ICB0aGlzLnB1c2hDYWxsKGNhbGwpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJu
IHshT2JqZWN0LjxzdHJpbmcsIHN0cmluZz59CisgICAgICovCisgICAgX2N1cnJlbnRBdHRyaWJ1
dGVzU3RhdGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBjdHggPSB0aGlzLndyYXBw
ZWRPYmplY3QoKTsKKyAgICAgICAgdmFyIHN0YXRlID0ge307CisgICAgICAgIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRFJlc291cmNlLkF0dHJpYnV0ZVByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlv
bihhdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgIHN0YXRlW2F0dHJpYnV0ZV0gPSBjdHhbYXR0cmli
dXRlXTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHshT2JqZWN0LjxzdHJpbmcsIHN0cmluZz59IHN0YXRlCisgICAg
ICovCisgICAgX2FwcGx5QXR0cmlidXRlc1N0YXRlOiBmdW5jdGlvbihzdGF0ZSkKKyAgICB7Cisg
ICAgICAgIHZhciBjdHggPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKKyAgICAgICAgT2JqZWN0Lmtl
eXMoc3RhdGUpLmZvckVhY2goZnVuY3Rpb24oYXR0cmlidXRlKSB7CisgICAgICAgICAgICBjdHhb
YXR0cmlidXRlXSA9IHN0YXRlW2F0dHJpYnV0ZV07CisgICAgICAgIH0pOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcmV0dXJuIHtPYmplY3QuPHN0cmluZywg
RnVuY3Rpb24+fQorICAgICAqLworICAgIF9jdXN0b21XcmFwRnVuY3Rpb25zOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB2YXIgd3JhcEZ1bmN0aW9ucyA9IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRFJlc291cmNlLl93cmFwRnVuY3Rpb25zOworICAgICAgICBpZiAoIXdyYXBGdW5jdGlvbnMp
IHsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpOworCisg
ICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVMaW5lYXJHcmFkaWVudCJdID0gUmVzb3Vy
Y2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7CisgICAgICAg
ICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVSYWRpYWxHcmFkaWVudCJdID0gUmVzb3VyY2UuV3Jh
cEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7CisgICAgICAgICAgICB3
cmFwRnVuY3Rpb25zWyJjcmVhdGVQYXR0ZXJuIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVz
b3VyY2VGYWN0b3J5TWV0aG9kKFJlc291cmNlKTsKKworICAgICAgICAgICAgLyoqCisgICAgICAg
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZQorICAgICAgICAgICAgICogQHBhcmFt
IHtGdW5jdGlvbj19IGZ1bmMKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgZnVuY3Rpb24g
c3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24obWV0aG9kTmFtZSwgZnVuYykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoZnVuYykgeworICAgICAgICAgICAgICAgICAgICAvKiog
QHRoaXMgUmVzb3VyY2UuV3JhcEZ1bmN0aW9uICovCisgICAgICAgICAgICAgICAgICAgIHdyYXBG
dW5jdGlvbnNbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMuY2FsbCh0aGlzLl9yZXNvdXJjZSwgdGhpcy5j
YWxsKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgLyoqIEB0aGlzIFJlc291cmNlLldyYXBGdW5jdGlvbiAqLwor
ICAgICAgICAgICAgICAgICAgICB3cmFwRnVuY3Rpb25zW21ldGhvZE5hbWVdID0gZnVuY3Rpb24o
KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9y
ZXNvdXJjZS5wdXNoQ2FsbCh0aGlzLmNhbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRSZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMuZm9yRWFjaChm
dW5jdGlvbihtZXRob2ROYW1lKSB7CisgICAgICAgICAgICAgICAgdmFyIGZ1bmMgPSBtZXRob2RO
YW1lID09PSAic2V0VHJhbnNmb3JtIiA/IHRoaXMucHVzaENhbGxfc2V0VHJhbnNmb3JtIDogbnVs
bDsKKyAgICAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1l
LCBmdW5jKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2ROYW1lKSB7
CisgICAgICAgICAgICAgICAgdmFyIGZ1bmMgPSBtZXRob2ROYW1lID09PSAiYmVnaW5QYXRoIiA/
IHRoaXMucHVzaENhbGxfYmVnaW5QYXRoIDogbnVsbDsKKyAgICAgICAgICAgICAgICBzdGF0ZU1v
ZGlmeWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1lLCBmdW5jKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24oInNhdmUiLCB0aGlzLnB1c2hD
YWxsX3NhdmUpOworICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24oInJlc3Rv
cmUiLCB0aGlzLnB1c2hDYWxsX3Jlc3RvcmUpOworICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdX
cmFwRnVuY3Rpb24oImNsaXAiKTsKKworICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEUmVzb3VyY2UuX3dyYXBGdW5jdGlvbnMgPSB3cmFwRnVuY3Rpb25zOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB3cmFwRnVuY3Rpb25zOworICAgIH0KK307CisKK0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBSZXNvdXJjZS5wcm90b3R5
cGU7CisKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKi8KQEAgLTE5NDIsNyArMjE3MCw3IEBAIFJl
c291cmNlVHJhY2tpbmdNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFy
YW0ge0NhbGx9IGNhbGwKICAgICAgKi8KLSAgICByZXBvcnRDYWxsOiBmdW5jdGlvbihjYWxsKQor
ICAgIGNhcHR1cmVDYWxsOiBmdW5jdGlvbihjYWxsKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9jYXB0dXJpbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTg4LDggKzIyMTYsMTggQEAg
SW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNl
ID0gUmVzb3VyY2UuZm9yT2JqZWN0KGdsQ29udGV4dCkgfHwgbmV3IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dFJlc291cmNlKGdsQ29udGV4dCwgdGhpcy5fY29uc3RydWN0V2ViR0xSZXBsYXlDb250ZXh0
LmJpbmQodGhpcywgZ2xDb250ZXh0KSk7CiAgICAgICAgIHRoaXMuX21hbmFnZXIucmVnaXN0ZXJS
ZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIHZhciBwcm94eSA9IHJlc291cmNlLnByb3h5T2Jq
ZWN0KCk7Ci0gICAgICAgIHJldHVybiBwcm94eTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLnBy
b3h5T2JqZWN0KCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0CisgICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAq
LworICAgIHdyYXBDYW52YXMyRENvbnRleHQ6IGZ1bmN0aW9uKGNvbnRleHQpCisgICAgeworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBSZXNvdXJjZS5mb3JPYmplY3QoY29udGV4dCkgfHwgbmV3IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlKGNvbnRleHQsIHRoaXMuX2NvbnN0cnVjdENh
bnZhczJEUmVwbGF5Q29udGV4dC5iaW5kKHRoaXMsIGNvbnRleHQpKTsKKyAgICAgICAgdGhpcy5f
bWFuYWdlci5yZWdpc3RlclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuIHJlc291
cmNlLnByb3h5T2JqZWN0KCk7CiAgICAgfSwKIAogICAgIGNhcHR1cmVGcmFtZTogZnVuY3Rpb24o
KQpAQCAtMjEwNCw2ICsyMzQyLDI5IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBSZXNldCB0aGUgcmVwbGF5IEdMIHN0YXRlIGFuZCBjbGVhciB0
aGUgY2FudmFzLgogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXBsYXlDb250ZXh0OworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0g
b3JpZ2luYWxDb250ZXh0CisgICAgICogQHJldHVybiB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
fQorICAgICAqLworICAgIF9jb25zdHJ1Y3RDYW52YXMyRFJlcGxheUNvbnRleHQ6IGZ1bmN0aW9u
KG9yaWdpbmFsQ29udGV4dCkKKyAgICB7CisgICAgICAgIHZhciByZXBsYXlDb250ZXh0ID0gb3Jp
Z2luYWxDb250ZXh0WyJfX3JlcGxheUNvbnRleHQiXTsKKyAgICAgICAgaWYgKCFyZXBsYXlDb250
ZXh0KSB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gb3JpZ2luYWxDb250ZXh0LmNhbnZhcy5j
bG9uZU5vZGUodHJ1ZSk7CisgICAgICAgICAgICByZXBsYXlDb250ZXh0ID0gLyoqIEB0eXBlIHtD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkR9ICovIFJlc291cmNlLndyYXBwZWRPYmplY3QoY2FudmFz
LmdldENvbnRleHQoIjJkIikpOworICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9y
aWdpbmFsQ29udGV4dCwgIl9fcmVwbGF5Q29udGV4dCIsIHsKKyAgICAgICAgICAgICAgICB2YWx1
ZTogcmVwbGF5Q29udGV4dCwKKyAgICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsCisgICAg
ICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAgICAgICAgICAgY29uZmlndXJh
YmxlOiB0cnVlCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRoaXMuX3JlcGxheUNvbnRl
eHQgPSByZXBsYXlDb250ZXh0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRklY
TUU6IENsZWFyIHRoZSBjYW52YXMuCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlcGxheUNv
bnRleHQ7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164706</attachid>
            <date>2012-09-19 03:29:33 -0700</date>
            <delta_ts>2012-09-20 04:49:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96746-20120919142858.patch</filename>
            <type>text/plain</type>
            <size>16480</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZhN2FkM2JjZmM1NzAw
MmQ0MzJmNTAwNmZjZDFhYjIwMTk4OGViZS4uNmQzN2Q0YzE5MjQ4Mzk0MTA0ZDNhNGNjN2U2ZjVj
MmJkM2FmMjY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gRmlyc3Qgc3RlcCB0b3dhcmRzIDJEIGNhbnZhcyBpbnN0cnVtZW50YXRpb24g
aW4gaW5qZWN0ZWQgc2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05Njc0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZpcnN0IHN0ZXAgdG93YXJkcyB0aGUgMkQgY2FudmFzIGluc3RydW1lbnRhdGlv
biBmcm9tIHRoZSBXZWJHTCBpbmplY3RlZCBzY3JpcHQgbW9kdWxlIHNpZGUuCisgICAgICAgIFdl
IHRyYWNlIGFuZCBzYXZlIGFsbCBjYWxscyB0aGF0IGFmZmVjdCB0aGUgMkQgY2FudmFzIGNvbnRl
eHQgc3RhdGUgYW5kIGl0J3MgcmVzb3VyY2VzIChHcmFkaWVudCBhbmQgUGF0dGVybikKKyAgICAg
ICAgc28gdGhhdCB3ZSBjb3VsZCByZXBsYXkgdGhlIGNvbnRleHQgYW5kIHJlc291cmNlcyBzdGF0
ZXMgbGF0ZXIuCisgICAgICAgIFRoZSAyRCBjYW52YXMgY29udGV4dCBzdGF0ZSBjb25zaXN0cyBv
ZjoKKyAgICAgICAgLSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeAorICAgICAgICAtIGN1
cnJlbnQgZGVmYXVsdCBwYXRoCisgICAgICAgIC0gY3VycmVudCBjbGlwcGluZyByZWdpb24gKGFm
ZmVjdGVkIGJ5IHRoZSAiY2xpcCIgY29tbWFuZCkKKyAgICAgICAgLSBjdXJyZW50IHZhbHVlcyBv
ZiB0aGUgY29udGV4dCBhdHRyaWJ1dGVzIChsaWtlIHN0cm9rZVN0eWxlLCBmaWxsU3R5bGUsIGV0
Yy4pCisgICAgICAgIC0gYSBzdGFjayBvZiBzYXZlZCBkcmF3aW5nIHN0YXRlcyAoYWZmZWN0ZWQg
YnkgdGhlICJzYXZlIiBhbmQgInJlc3RvcmUiIGNvbW1hbmRzKQorCisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVTb3VyY2UuanM6CisgICAgICAgICguKToKKwog
MjAxMi0wOS0xOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyODk3Ni4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVTb3Vy
Y2UuanMKaW5kZXggNjc4MGFmM2M0MTUyNWM5OGU3NmJkYjgwMzU3MGVlYzNiOGNiNzdiMi4uMjZh
ZmVlYjU0ZmVmZDJkNGJiODc0NzAzZTM3MjFmYTQ4ZWJiMDY4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVTb3VyY2UuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVTb3Vy
Y2UuanMKQEAgLTc0Myw3ICs3NDMsNyBAQCBSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBpZiAoaXNDYXB0dXJpbmcpIHsKICAgICAgICAgICAgICAgICB2YXIgY2FsbCA9IHdyYXBG
dW5jdGlvbi5jYWxsKCk7CiAgICAgICAgICAgICAgICAgY2FsbC5zZXRTdGFja1RyYWNlKFN0YWNr
VHJhY2UuY3JlYXRlKDEsIGFyZ3VtZW50cy5jYWxsZWUpKTsKLSAgICAgICAgICAgICAgICBtYW5h
Z2VyLnJlcG9ydENhbGwoY2FsbCk7CisgICAgICAgICAgICAgICAgbWFuYWdlci5jYXB0dXJlQ2Fs
bChjYWxsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB3cmFwRnVuY3Rpb24u
cmVzdWx0KCk7CiAgICAgICAgIH07CkBAIC03NjcsNyArNzY3LDcgQEAgUmVzb3VyY2UucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9yaWdpbmFsRnVuY3Rpb24uYXBwbHko
b3JpZ2luYWxPYmplY3QsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICB2YXIgc3RhY2tUcmFjZSA9
IFN0YWNrVHJhY2UuY3JlYXRlKDEsIGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICAgICAgICAgdmFy
IGNhbGwgPSBuZXcgQ2FsbChyZXNvdXJjZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudHMsIHJlc3Vs
dCwgc3RhY2tUcmFjZSk7Ci0gICAgICAgICAgICBtYW5hZ2VyLnJlcG9ydENhbGwoY2FsbCk7Cisg
ICAgICAgICAgICBtYW5hZ2VyLmNhcHR1cmVDYWxsKGNhbGwpOwogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfTsKICAgICB9LApAQCAtODMzLDYgKzgzMywyNyBAQCBSZXNvdXJj
ZS5XcmFwRnVuY3Rpb24ucHJvdG90eXBlID0gewogfQogCiAvKioKKyAqIEBwYXJhbSB7IUZ1bmN0
aW9ufSByZXNvdXJjZUNvbnN0cnVjdG9yCisgKiBAcmV0dXJuIHtGdW5jdGlvbn0KKyAqLworUmVz
b3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZCA9IGZ1bmN0aW9uKHJlc291
cmNlQ29uc3RydWN0b3IpCit7CisgICAgLyoqIEB0aGlzIFJlc291cmNlLldyYXBGdW5jdGlvbiAq
LworICAgIHJldHVybiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgd3JhcHBlZE9iamVj
dCA9IHRoaXMucmVzdWx0KCk7CisgICAgICAgIGlmICghd3JhcHBlZE9iamVjdCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IHJlc291cmNlQ29uc3RydWN0
b3Iod3JhcHBlZE9iamVjdCk7CisgICAgICAgIHZhciBtYW5hZ2VyID0gdGhpcy5fcmVzb3VyY2Uu
bWFuYWdlcigpOworICAgICAgICBpZiAobWFuYWdlcikKKyAgICAgICAgICAgIG1hbmFnZXIucmVn
aXN0ZXJSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgICAgIHRoaXMub3ZlcnJpZGVSZXN1bHQocmVz
b3VyY2UucHJveHlPYmplY3QoKSk7CisgICAgICAgIHJlc291cmNlLnB1c2hDYWxsKHRoaXMuY2Fs
bCgpKTsKKyAgICB9Cit9CisKKy8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge1Jlc291
cmNlfSBvcmlnaW5hbFJlc291cmNlCiAgKiBAcGFyYW0ge09iamVjdH0gZGF0YQpAQCAtODY3LDYg
Kzg4OCwxMCBAQCBSZXBsYXlhYmxlUmVzb3VyY2UucmVwbGF5ID0gZnVuY3Rpb24ob2JqLCBjYWNo
ZSkKICAgICByZXR1cm4gKG9iaiBpbnN0YW5jZW9mIFJlcGxheWFibGVSZXNvdXJjZSkgPyBvYmou
cmVwbGF5KGNhY2hlKS53cmFwcGVkT2JqZWN0KCkgOiBvYmo7CiB9CiAKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCisvLyBXZWJHTAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwogLyoqCiAgKiBA
Y29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtSZXNvdXJjZX0KQEAgLTEwMzMsOCArMTA1OCwxMCBA
QCBXZWJHTFRleHR1cmVSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBmcmFtZWJ1
ZmZlclJlc291cmNlID0gZ2xSZXNvdXJjZS5jdXJyZW50QmluZGluZyhnbC5GUkFNRUJVRkZFUik7
CiAgICAgICAgIGlmIChmcmFtZWJ1ZmZlclJlc291cmNlKQogICAgICAgICAgICAgdGhpcy5wdXNo
Q2FsbChuZXcgQ2FsbChnbFJlc291cmNlLCAiYmluZEZyYW1lYnVmZmVyIiwgW2dsLkZSQU1FQlVG
RkVSLCBmcmFtZWJ1ZmZlclJlc291cmNlXSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBj
b25zb2xlLmVycm9yKCJBU1NFUlRfTk9UX1JFQUNIRUQ6IE5vIEZSQU1FQlVGRkVSIGJvdW5kIHdo
aWxlIGNhbGxpbmcgZ2wuIiArIGNhbGwuZnVuY3Rpb25OYW1lKCkpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBjYXNlLgorICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiQVNTRVJUX05PVF9SRUFDSEVEOiBDb3VsZCBub3QgcHJvcGVybHkgcHJv
Y2VzcyBhIGdsLiIgKyBjYWxsLmZ1bmN0aW9uTmFtZSgpICsgIiBjYWxsIHdoaWxlIHRoZSBEUkFX
SU5HIEJVRkZFUiBpcyBib3VuZC4iKTsKKyAgICAgICAgfQogICAgICAgICB0aGlzLnB1c2hDYWxs
KGNhbGwpOwogICAgIH0KIH0KQEAgLTEzNjksMTAgKzEzOTYsMTAgQEAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0UmVzb3VyY2UuZm9yT2JqZWN0ID0gZnVuY3Rpb24ob2JqKQogICAgIHZhciByZXNvdXJj
ZSA9IFJlc291cmNlLmZvck9iamVjdChvYmopOwogICAgIGlmICghcmVzb3VyY2UgfHwgcmVzb3Vy
Y2UgaW5zdGFuY2VvZiBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZSkKICAgICAgICAgcmV0
dXJuIHJlc291cmNlOwotICAgIHZhciBjYWxsID0gcmVzb3VyY2UuY2FsbHMoKTsKLSAgICBpZiAo
IWNhbGwgfHwgIWNhbGwubGVuZ3RoKQorICAgIHZhciBjYWxscyA9IHJlc291cmNlLmNhbGxzKCk7
CisgICAgaWYgKCFjYWxscyB8fCAhY2FsbHMubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbDsK
LSAgICByZXNvdXJjZSA9IGNhbGxbMF0ucmVzb3VyY2UoKTsKKyAgICByZXNvdXJjZSA9IGNhbGxz
WzBdLnJlc291cmNlKCk7CiAgICAgcmV0dXJuIChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dFJlc291cmNlKSA/IHJlc291cmNlIDogbnVsbDsKIH0KIApAQCAtMTU5Myw3
ICsxNjIwLDcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2xTdGF0ZS5BQ1RJVkVfVEVYVFVS
RSk7CiAKLSAgICAgICAgcmV0dXJuIFJlc291cmNlLnByb3RvdHlwZS5fZG9SZXBsYXlDYWxscy5j
YWxsKHRoaXMsIGRhdGEsIGNhY2hlKTsKKyAgICAgICAgUmVzb3VyY2UucHJvdG90eXBlLl9kb1Jl
cGxheUNhbGxzLmNhbGwodGhpcywgZGF0YSwgY2FjaGUpOwogICAgIH0sCiAKICAgICAvKioKQEAg
LTE2NjEsMzMgKzE2ODgsMTMgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoIXdyYXBGdW5jdGlvbnMpIHsKICAgICAgICAgICAgIHdyYXBG
dW5jdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogCi0gICAgICAgICAgICAvKioKLSAgICAg
ICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lCi0gICAgICAgICAgICAgKiBAcGFy
YW0ge0Z1bmN0aW9ufSByZXNvdXJjZUNvbnN0cnVjdG9yCi0gICAgICAgICAgICAgKi8KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKG1ldGhvZE5hbWUsIHJl
c291cmNlQ29uc3RydWN0b3IpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLyoqIEB0
aGlzIFJlc291cmNlLldyYXBGdW5jdGlvbiAqLwotICAgICAgICAgICAgICAgIHdyYXBGdW5jdGlv
bnNbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICB2YXIgd3JhcHBlZE9iamVjdCA9IHRoaXMucmVzdWx0KCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghd3JhcHBlZE9iamVjdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IHJlc291cmNlQ29u
c3RydWN0b3Iod3JhcHBlZE9iamVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBtYW5hZ2Vy
ID0gdGhpcy5fcmVzb3VyY2UubWFuYWdlcigpOwotICAgICAgICAgICAgICAgICAgICBpZiAobWFu
YWdlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZShy
ZXNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVSZXN1bHQocmVzb3Vy
Y2UucHJveHlPYmplY3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlc291cmNlLnB1c2hDYWxs
KHRoaXMuY2FsbCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBjcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlQnVmZmVyIiwgV2ViR0xCdWZm
ZXJSZXNvdXJjZSk7Ci0gICAgICAgICAgICBjcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiY3Jl
YXRlU2hhZGVyIiwgV2ViR0xTaGFkZXJSZXNvdXJjZSk7Ci0gICAgICAgICAgICBjcmVhdGVSZXNv
dXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlUHJvZ3JhbSIsIFdlYkdMUHJvZ3JhbVJlc291cmNlKTsK
LSAgICAgICAgICAgIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKCJjcmVhdGVUZXh0dXJlIiwg
V2ViR0xUZXh0dXJlUmVzb3VyY2UpOwotICAgICAgICAgICAgY3JlYXRlUmVzb3VyY2VXcmFwRnVu
Y3Rpb24oImNyZWF0ZUZyYW1lYnVmZmVyIiwgV2ViR0xGcmFtZWJ1ZmZlclJlc291cmNlKTsKLSAg
ICAgICAgICAgIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKCJjcmVhdGVSZW5kZXJidWZmZXIi
LCBXZWJHTFJlbmRlcmJ1ZmZlclJlc291cmNlKTsKLSAgICAgICAgICAgIGNyZWF0ZVJlc291cmNl
V3JhcEZ1bmN0aW9uKCJnZXRVbmlmb3JtTG9jYXRpb24iLCBSZXNvdXJjZSk7CisgICAgICAgICAg
ICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVCdWZmZXIiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5y
ZXNvdXJjZUZhY3RvcnlNZXRob2QoV2ViR0xCdWZmZXJSZXNvdXJjZSk7CisgICAgICAgICAgICB3
cmFwRnVuY3Rpb25zWyJjcmVhdGVTaGFkZXIiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNv
dXJjZUZhY3RvcnlNZXRob2QoV2ViR0xTaGFkZXJSZXNvdXJjZSk7CisgICAgICAgICAgICB3cmFw
RnVuY3Rpb25zWyJjcmVhdGVQcm9ncmFtIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3Vy
Y2VGYWN0b3J5TWV0aG9kKFdlYkdMUHJvZ3JhbVJlc291cmNlKTsKKyAgICAgICAgICAgIHdyYXBG
dW5jdGlvbnNbImNyZWF0ZVRleHR1cmUiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJj
ZUZhY3RvcnlNZXRob2QoV2ViR0xUZXh0dXJlUmVzb3VyY2UpOworICAgICAgICAgICAgd3JhcEZ1
bmN0aW9uc1siY3JlYXRlRnJhbWVidWZmZXIiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNv
dXJjZUZhY3RvcnlNZXRob2QoV2ViR0xGcmFtZWJ1ZmZlclJlc291cmNlKTsKKyAgICAgICAgICAg
IHdyYXBGdW5jdGlvbnNbImNyZWF0ZVJlbmRlcmJ1ZmZlciJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0
aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJHTFJlbmRlcmJ1ZmZlclJlc291cmNlKTsKKyAg
ICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImdldFVuaWZvcm1Mb2NhdGlvbiJdID0gUmVzb3VyY2Uu
V3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7CiAKICAgICAgICAg
ICAgIC8qKgogICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUKQEAgLTE3
NTMsNiArMTc2MCwyMjcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UucHJvdG90eXBl
ID0gewogCiBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5wcm90b3R5cGUuX19wcm90b19f
ID0gUmVzb3VyY2UucHJvdG90eXBlOwogCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gMkQg
Q2FudmFzCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQGV4dGVuZHMge1Jlc291cmNlfQorICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkR9IGNvbnRleHQKKyAqIEBwYXJhbSB7RnVuY3Rpb259IHJlcGxheUNvbnRleHRDYWxsYmFjawor
ICovCitmdW5jdGlvbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZShjb250ZXh0LCBy
ZXBsYXlDb250ZXh0Q2FsbGJhY2spCit7CisgICAgUmVzb3VyY2UuY2FsbCh0aGlzLCBjb250ZXh0
KTsKKyAgICB0aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJhY2sgPSByZXBsYXlDb250ZXh0Q2FsbGJh
Y2s7CisgICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrID0gW107Cit9CisKKy8qKgorICogQGNvbnN0
CisgKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59CisgKi8KK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RFJlc291cmNlLkF0dHJpYnV0ZVByb3BlcnRpZXMgPSBbCisgICAgInN0cm9rZVN0eWxlIiwKKyAg
ICAiZmlsbFN0eWxlIiwKKyAgICAiZ2xvYmFsQWxwaGEiLAorICAgICJsaW5lV2lkdGgiLAorICAg
ICJsaW5lQ2FwIiwKKyAgICAibGluZUpvaW4iLAorICAgICJtaXRlckxpbWl0IiwKKyAgICAic2hh
ZG93T2Zmc2V0WCIsCisgICAgInNoYWRvd09mZnNldFkiLAorICAgICJzaGFkb3dCbHVyIiwKKyAg
ICAic2hhZG93Q29sb3IiLAorICAgICJnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24iLAorICAgICJm
b250IiwKKyAgICAidGV4dEFsaWduIiwKKyAgICAidGV4dEJhc2VsaW5lIgorXTsKKworLyoqCisg
KiBAY29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqLworQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEUmVzb3VyY2UuUGF0aE1ldGhvZHMgPSBbCisgICAgImJlZ2luUGF0aCIsCisgICAg
Im1vdmVUbyIsCisgICAgImNsb3NlUGF0aCIsCisgICAgImxpbmVUbyIsCisgICAgInF1YWRyYXRp
Y0N1cnZlVG8iLAorICAgICJiZXppZXJDdXJ2ZVRvIiwKKyAgICAiYXJjVG8iLAorICAgICJhcmMi
LAorICAgICJyZWN0IgorXTsKKworLyoqCisgKiBAY29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3Ry
aW5nPn0KKyAqLworQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuVHJhbnNmb3JtYXRp
b25NYXRyaXhNZXRob2RzID0gWworICAgICJzY2FsZSIsCisgICAgInJvdGF0ZSIsCisgICAgInRy
YW5zbGF0ZSIsCisgICAgInRyYW5zZm9ybSIsCisgICAgInNldFRyYW5zZm9ybSIKK107CisKK0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAg
ICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YQorICAgICAqIEBwYXJh
bSB7Q2FjaGV9IGNhY2hlCisgICAgICovCisgICAgX3BvcHVsYXRlUmVwbGF5YWJsZURhdGE6IGZ1
bmN0aW9uKGRhdGEsIGNhY2hlKQorICAgIHsKKyAgICAgICAgZGF0YS5yZXBsYXlDb250ZXh0Q2Fs
bGJhY2sgPSB0aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJhY2s7CisgICAgICAgIGRhdGEuYXR0cmli
dXRlc1N0YWNrID0gdGhpcy5fYXR0cmlidXRlc1N0YWNrLnNsaWNlKDApOworICAgICAgICBkYXRh
LmN1cnJlbnRBdHRyaWJ1dGVzID0gdGhpcy5fY3VycmVudEF0dHJpYnV0ZXNTdGF0ZSgpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0ge09iamVjdH0g
ZGF0YQorICAgICAqIEBwYXJhbSB7Q2FjaGV9IGNhY2hlCisgICAgICovCisgICAgX2RvUmVwbGF5
Q2FsbHM6IGZ1bmN0aW9uKGRhdGEsIGNhY2hlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVwbGF5
Q29udGV4dENhbGxiYWNrID0gZGF0YS5yZXBsYXlDb250ZXh0Q2FsbGJhY2s7CisgICAgICAgIHRo
aXMuX2F0dHJpYnV0ZXNTdGFjayA9IGRhdGEuYXR0cmlidXRlc1N0YWNrLnNsaWNlKDApOworCisg
ICAgICAgIHZhciBjdHggPSBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KHRoaXMuX3JlcGxheUNvbnRl
eHRDYWxsYmFjaygpKTsKKyAgICAgICAgdGhpcy5zZXRXcmFwcGVkT2JqZWN0KGN0eCk7CisKKyAg
ICAgICAgdmFyIHNhdmVDYWxscyA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gZGF0
YS5jYWxscy5sZW5ndGg7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIHZhciByZXBsYXlhYmxl
Q2FsbCA9IGRhdGEuY2FsbHNbaV07CisgICAgICAgICAgICBpZiAocmVwbGF5YWJsZUNhbGwuZnVu
Y3Rpb25OYW1lKCkgPT09ICJzYXZlIikgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHNhdmVDYWxscyA8IHRoaXMuX2F0dHJpYnV0ZXNTdGFjay5sZW5ndGgsICJTaXplIG9mIGF0dHJp
YnV0ZXMgc3RhY2sgaXMgbGVzcyB0aGFuICdzYXZlJyBjYWxscyIpOworICAgICAgICAgICAgICAg
IHRoaXMuX2FwcGx5QXR0cmlidXRlc1N0YXRlKHRoaXMuX2F0dHJpYnV0ZXNTdGFja1tzYXZlQ2Fs
bHMrK10pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5fY2FsbHMucHVzaChyZXBs
YXlhYmxlQ2FsbC5yZXBsYXkoY2FjaGUpKTsKKyAgICAgICAgfQorICAgICAgICBjb25zb2xlLmFz
c2VydChzYXZlQ2FsbHMgPT09IHRoaXMuX2F0dHJpYnV0ZXNTdGFjay5sZW5ndGgsICJTaXplIG9m
IGF0dHJpYnV0ZXMgc3RhY2sgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgJ3NhdmUn
IGNhbGxzIik7CisgICAgICAgIHRoaXMuX2FwcGx5QXR0cmlidXRlc1N0YXRlKGRhdGEuY3VycmVu
dEF0dHJpYnV0ZXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0NhbGx9IGNh
bGwKKyAgICAgKi8KKyAgICBwdXNoQ2FsbF9zZXRUcmFuc2Zvcm06IGZ1bmN0aW9uKGNhbGwpCisg
ICAgeworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9ic29sZXRlIHRyYW5zZm9ybSBtYXRyaXgg
bWV0aG9kcy4KKyAgICAgICAgdGhpcy5wdXNoQ2FsbChjYWxsKTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtDYWxsfSBjYWxsCisgICAgICovCisgICAgcHVzaENhbGxfYmVnaW5Q
YXRoOiBmdW5jdGlvbihjYWxsKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvYnNv
bGV0ZSBwYXRoIG1ldGhvZHMuCisgICAgICAgIHRoaXMucHVzaENhbGwoY2FsbCk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FsbH0gY2FsbAorICAgICAqLworICAgIHB1c2hD
YWxsX3NhdmU6IGZ1bmN0aW9uKGNhbGwpCisgICAgeworICAgICAgICB0aGlzLl9hdHRyaWJ1dGVz
U3RhY2sucHVzaCh0aGlzLl9jdXJyZW50QXR0cmlidXRlc1N0YXRlKCkpOworICAgICAgICB0aGlz
LnB1c2hDYWxsKGNhbGwpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0NhbGx9
IGNhbGwKKyAgICAgKi8KKyAgICBwdXNoQ2FsbF9yZXN0b3JlOiBmdW5jdGlvbihjYWxsKQorICAg
IHsKKyAgICAgICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrLnBvcCgpOworICAgICAgICAvLyBGSVhN
RTogUmVtb3ZlIG9ic29sZXRlIGNsaXAsc2F2ZSBtZXRob2RzLgorICAgICAgICB0aGlzLnB1c2hD
YWxsKGNhbGwpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHshT2JqZWN0Ljxz
dHJpbmcsIHN0cmluZz59CisgICAgICovCisgICAgX2N1cnJlbnRBdHRyaWJ1dGVzU3RhdGU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBjdHggPSB0aGlzLndyYXBwZWRPYmplY3QoKTsK
KyAgICAgICAgdmFyIHN0YXRlID0ge307CisgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RFJlc291cmNlLkF0dHJpYnV0ZVByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbihhdHRyaWJ1dGUp
IHsKKyAgICAgICAgICAgIHN0YXRlW2F0dHJpYnV0ZV0gPSBjdHhbYXR0cmlidXRlXTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHshT2JqZWN0LjxzdHJpbmcsIHN0cmluZz59IHN0YXRlCisgICAgICovCisgICAgX2Fw
cGx5QXR0cmlidXRlc1N0YXRlOiBmdW5jdGlvbihzdGF0ZSkKKyAgICB7CisgICAgICAgIHZhciBj
dHggPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKKyAgICAgICAgT2JqZWN0LmtleXMoc3RhdGUpLmZv
ckVhY2goZnVuY3Rpb24oYXR0cmlidXRlKSB7CisgICAgICAgICAgICBjdHhbYXR0cmlidXRlXSA9
IHN0YXRlW2F0dHJpYnV0ZV07CisgICAgICAgIH0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAb3ZlcnJpZGUKKyAgICAgKiBAcmV0dXJuIHtPYmplY3QuPHN0cmluZywgRnVuY3Rpb24+fQor
ICAgICAqLworICAgIF9jdXN0b21XcmFwRnVuY3Rpb25zOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB2YXIgd3JhcEZ1bmN0aW9ucyA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNl
Ll93cmFwRnVuY3Rpb25zOworICAgICAgICBpZiAoIXdyYXBGdW5jdGlvbnMpIHsKKyAgICAgICAg
ICAgIHdyYXBGdW5jdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpOworCisgICAgICAgICAgICB3
cmFwRnVuY3Rpb25zWyJjcmVhdGVMaW5lYXJHcmFkaWVudCJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0
aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7CisgICAgICAgICAgICB3cmFwRnVu
Y3Rpb25zWyJjcmVhdGVSYWRpYWxHcmFkaWVudCJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJl
c291cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25z
WyJjcmVhdGVQYXR0ZXJuIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5
TWV0aG9kKFJlc291cmNlKTsKKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbWV0aG9kTmFtZQorICAgICAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbj19
IGZ1bmMKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgZnVuY3Rpb24gc3RhdGVNb2RpZnlp
bmdXcmFwRnVuY3Rpb24obWV0aG9kTmFtZSwgZnVuYykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZnVuYykgeworICAgICAgICAgICAgICAgICAgICAvKiogQHRoaXMgUmVzb3Vy
Y2UuV3JhcEZ1bmN0aW9uICovCisgICAgICAgICAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbbWV0
aG9kTmFtZV0gPSBmdW5jdGlvbigpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmMuY2FsbCh0aGlzLl9yZXNvdXJjZSwgdGhpcy5jYWxsKCkpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgLyoqIEB0aGlzIFJlc291cmNlLldyYXBGdW5jdGlvbiAqLworICAgICAgICAgICAg
ICAgICAgICB3cmFwRnVuY3Rpb25zW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5wdXNo
Q2FsbCh0aGlzLmNhbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRS
ZXNvdXJjZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRo
b2ROYW1lKSB7CisgICAgICAgICAgICAgICAgdmFyIGZ1bmMgPSBtZXRob2ROYW1lID09PSAic2V0
VHJhbnNmb3JtIiA/IHRoaXMucHVzaENhbGxfc2V0VHJhbnNmb3JtIDogbnVsbDsKKyAgICAgICAg
ICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1lLCBmdW5jKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3Vy
Y2UuUGF0aE1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2ROYW1lKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGZ1bmMgPSBtZXRob2ROYW1lID09PSAiYmVnaW5QYXRoIiA/IHRoaXMucHVzaENh
bGxfYmVnaW5QYXRoIDogbnVsbDsKKyAgICAgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBG
dW5jdGlvbihtZXRob2ROYW1lLCBmdW5jKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
c3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24oInNhdmUiLCB0aGlzLnB1c2hDYWxsX3NhdmUpOwor
ICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24oInJlc3RvcmUiLCB0aGlzLnB1
c2hDYWxsX3Jlc3RvcmUpOworICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24o
ImNsaXAiKTsKKworICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2Uu
X3dyYXBGdW5jdGlvbnMgPSB3cmFwRnVuY3Rpb25zOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB3cmFwRnVuY3Rpb25zOworICAgIH0KK307CisKK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJl
c291cmNlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBSZXNvdXJjZS5wcm90b3R5cGU7CisKIC8qKgog
ICogQGNvbnN0cnVjdG9yCiAgKi8KQEAgLTE5NDIsNyArMjE3MCw3IEBAIFJlc291cmNlVHJhY2tp
bmdNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge0NhbGx9IGNh
bGwKICAgICAgKi8KLSAgICByZXBvcnRDYWxsOiBmdW5jdGlvbihjYWxsKQorICAgIGNhcHR1cmVD
YWxsOiBmdW5jdGlvbihjYWxsKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jYXB0dXJpbmcp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTg4LDggKzIyMTYsMTggQEAgSW5qZWN0ZWRTY3Jp
cHQucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlID0gUmVzb3VyY2Uu
Zm9yT2JqZWN0KGdsQ29udGV4dCkgfHwgbmV3IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNl
KGdsQ29udGV4dCwgdGhpcy5fY29uc3RydWN0V2ViR0xSZXBsYXlDb250ZXh0LmJpbmQodGhpcywg
Z2xDb250ZXh0KSk7CiAgICAgICAgIHRoaXMuX21hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZShyZXNv
dXJjZSk7Ci0gICAgICAgIHZhciBwcm94eSA9IHJlc291cmNlLnByb3h5T2JqZWN0KCk7Ci0gICAg
ICAgIHJldHVybiBwcm94eTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLnByb3h5T2JqZWN0KCk7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEfSBjb250ZXh0CisgICAgICogQHJldHVybiB7T2JqZWN0fQorICAgICAqLworICAgIHdyYXBD
YW52YXMyRENvbnRleHQ6IGZ1bmN0aW9uKGNvbnRleHQpCisgICAgeworICAgICAgICB2YXIgcmVz
b3VyY2UgPSBSZXNvdXJjZS5mb3JPYmplY3QoY29udGV4dCkgfHwgbmV3IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFJlc291cmNlKGNvbnRleHQsIHRoaXMuX2NvbnN0cnVjdENhbnZhczJEUmVwbGF5
Q29udGV4dC5iaW5kKHRoaXMsIGNvbnRleHQpKTsKKyAgICAgICAgdGhpcy5fbWFuYWdlci5yZWdp
c3RlclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLnByb3h5T2Jq
ZWN0KCk7CiAgICAgfSwKIAogICAgIGNhcHR1cmVGcmFtZTogZnVuY3Rpb24oKQpAQCAtMjEwNCw2
ICsyMzQyLDI5IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBSZXNldCB0aGUgcmVwbGF5IEdMIHN0YXRlIGFuZCBjbGVhciB0aGUgY2FudmFzLgog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXBsYXlDb250ZXh0OworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gb3JpZ2luYWxDb250
ZXh0CisgICAgICogQHJldHVybiB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfQorICAgICAqLwor
ICAgIF9jb25zdHJ1Y3RDYW52YXMyRFJlcGxheUNvbnRleHQ6IGZ1bmN0aW9uKG9yaWdpbmFsQ29u
dGV4dCkKKyAgICB7CisgICAgICAgIHZhciByZXBsYXlDb250ZXh0ID0gb3JpZ2luYWxDb250ZXh0
WyJfX3JlcGxheUNvbnRleHQiXTsKKyAgICAgICAgaWYgKCFyZXBsYXlDb250ZXh0KSB7CisgICAg
ICAgICAgICB2YXIgY2FudmFzID0gb3JpZ2luYWxDb250ZXh0LmNhbnZhcy5jbG9uZU5vZGUodHJ1
ZSk7CisgICAgICAgICAgICByZXBsYXlDb250ZXh0ID0gLyoqIEB0eXBlIHtDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkR9ICovIFJlc291cmNlLndyYXBwZWRPYmplY3QoY2FudmFzLmdldENvbnRleHQo
IjJkIikpOworICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9yaWdpbmFsQ29udGV4
dCwgIl9fcmVwbGF5Q29udGV4dCIsIHsKKyAgICAgICAgICAgICAgICB2YWx1ZTogcmVwbGF5Q29u
dGV4dCwKKyAgICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsCisgICAgICAgICAgICAgICAg
ZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlCisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRoaXMuX3JlcGxheUNvbnRleHQgPSByZXBsYXlD
b250ZXh0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IENsZWFyIHRo
ZSBjYW52YXMuCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlcGxheUNvbnRleHQ7CiAgICAg
fQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164893</attachid>
            <date>2012-09-20 04:50:50 -0700</date>
            <delta_ts>2012-09-24 08:25:40 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-96746-20120920155015.patch</filename>
            <type>text/plain</type>
            <size>16520</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2MjdiMDJmOWY0Mzg1
NGU0OTIwNTk0ZjEwYTIxN2YxYjNkN2Q3NS4uMjQyMWU2OTg5NmNkZjc0ZDBhZTdhNDMwMjY3NDg3
NTRlYTYzZDY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gRmlyc3Qgc3RlcCB0b3dhcmRzIDJEIGNhbnZhcyBpbnN0cnVtZW50YXRpb24g
aW4gaW5qZWN0ZWQgc2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05Njc0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZpcnN0IHN0ZXAgdG93YXJkcyB0aGUgMkQgY2FudmFzIGluc3RydW1lbnRhdGlv
biBmcm9tIHRoZSBXZWJHTCBpbmplY3RlZCBzY3JpcHQgbW9kdWxlIHNpZGUuCisgICAgICAgIFdl
IHRyYWNlIGFuZCBzYXZlIGFsbCBjYWxscyB0aGF0IGFmZmVjdCB0aGUgMkQgY2FudmFzIGNvbnRl
eHQgc3RhdGUgYW5kIGl0J3MgcmVzb3VyY2VzIChHcmFkaWVudCBhbmQgUGF0dGVybikKKyAgICAg
ICAgc28gdGhhdCB3ZSBjb3VsZCByZXBsYXkgdGhlIGNvbnRleHQgYW5kIHJlc291cmNlcyBzdGF0
ZXMgbGF0ZXIuCisgICAgICAgIFRoZSAyRCBjYW52YXMgY29udGV4dCBzdGF0ZSBjb25zaXN0cyBv
ZjoKKyAgICAgICAgLSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeAorICAgICAgICAtIGN1
cnJlbnQgZGVmYXVsdCBwYXRoCisgICAgICAgIC0gY3VycmVudCBjbGlwcGluZyByZWdpb24gKGFm
ZmVjdGVkIGJ5IHRoZSAiY2xpcCIgY29tbWFuZCkKKyAgICAgICAgLSBjdXJyZW50IHZhbHVlcyBv
ZiB0aGUgY29udGV4dCBhdHRyaWJ1dGVzIChsaWtlIHN0cm9rZVN0eWxlLCBmaWxsU3R5bGUsIGV0
Yy4pCisgICAgICAgIC0gYSBzdGFjayBvZiBzYXZlZCBkcmF3aW5nIHN0YXRlcyAoYWZmZWN0ZWQg
YnkgdGhlICJzYXZlIiBhbmQgInJlc3RvcmUiIGNvbW1hbmRzKQorCisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzOgorICAgICAgICAoLik6CisK
IDIwMTItMDktMTkgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNv
bS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gcmVtb3ZlIHN0YXRpY19jYXN0IHdoaWNoIHdp
bGwgY2F1c2UgdmlkZW8gY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcwppbmRleCA2NzgwYWYz
YzQxNTI1Yzk4ZTc2YmRiODAzNTcwZWVjM2I4Y2I3N2IyLi4yNmFmZWViNTRmZWZkMmQ0YmI4NzQ3
MDNlMzcyMWZhNDhlYmIwNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzCkBAIC03NDMsNyAr
NzQzLDcgQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKGlzQ2FwdHVy
aW5nKSB7CiAgICAgICAgICAgICAgICAgdmFyIGNhbGwgPSB3cmFwRnVuY3Rpb24uY2FsbCgpOwog
ICAgICAgICAgICAgICAgIGNhbGwuc2V0U3RhY2tUcmFjZShTdGFja1RyYWNlLmNyZWF0ZSgxLCBh
cmd1bWVudHMuY2FsbGVlKSk7Ci0gICAgICAgICAgICAgICAgbWFuYWdlci5yZXBvcnRDYWxsKGNh
bGwpOworICAgICAgICAgICAgICAgIG1hbmFnZXIuY2FwdHVyZUNhbGwoY2FsbCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXR1cm4gd3JhcEZ1bmN0aW9uLnJlc3VsdCgpOwogICAgICAg
ICB9OwpAQCAtNzY3LDcgKzc2Nyw3IEBAIFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHZhciByZXN1bHQgPSBvcmlnaW5hbEZ1bmN0aW9uLmFwcGx5KG9yaWdpbmFsT2JqZWN0LCBh
cmd1bWVudHMpOwogICAgICAgICAgICAgdmFyIHN0YWNrVHJhY2UgPSBTdGFja1RyYWNlLmNyZWF0
ZSgxLCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICAgICAgIHZhciBjYWxsID0gbmV3IENhbGwo
cmVzb3VyY2UsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRzLCByZXN1bHQsIHN0YWNrVHJhY2UpOwot
ICAgICAgICAgICAgbWFuYWdlci5yZXBvcnRDYWxsKGNhbGwpOworICAgICAgICAgICAgbWFuYWdl
ci5jYXB0dXJlQ2FsbChjYWxsKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH07CiAgICAgfSwKQEAgLTgzMyw2ICs4MzMsMjcgQEAgUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnBy
b3RvdHlwZSA9IHsKIH0KIAogLyoqCisgKiBAcGFyYW0geyFGdW5jdGlvbn0gcmVzb3VyY2VDb25z
dHJ1Y3RvcgorICogQHJldHVybiB7RnVuY3Rpb259CisgKi8KK1Jlc291cmNlLldyYXBGdW5jdGlv
bi5yZXNvdXJjZUZhY3RvcnlNZXRob2QgPSBmdW5jdGlvbihyZXNvdXJjZUNvbnN0cnVjdG9yKQor
eworICAgIC8qKiBAdGhpcyBSZXNvdXJjZS5XcmFwRnVuY3Rpb24gKi8KKyAgICByZXR1cm4gZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHdyYXBwZWRPYmplY3QgPSB0aGlzLnJlc3VsdCgp
OworICAgICAgICBpZiAoIXdyYXBwZWRPYmplY3QpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHZhciByZXNvdXJjZSA9IG5ldyByZXNvdXJjZUNvbnN0cnVjdG9yKHdyYXBwZWRPYmplY3Qp
OworICAgICAgICB2YXIgbWFuYWdlciA9IHRoaXMuX3Jlc291cmNlLm1hbmFnZXIoKTsKKyAgICAg
ICAgaWYgKG1hbmFnZXIpCisgICAgICAgICAgICBtYW5hZ2VyLnJlZ2lzdGVyUmVzb3VyY2UocmVz
b3VyY2UpOworICAgICAgICB0aGlzLm92ZXJyaWRlUmVzdWx0KHJlc291cmNlLnByb3h5T2JqZWN0
KCkpOworICAgICAgICByZXNvdXJjZS5wdXNoQ2FsbCh0aGlzLmNhbGwoKSk7CisgICAgfQorfQor
CisvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHtSZXNvdXJjZX0gb3JpZ2luYWxSZXNv
dXJjZQogICogQHBhcmFtIHtPYmplY3R9IGRhdGEKQEAgLTg2Nyw2ICs4ODgsMTAgQEAgUmVwbGF5
YWJsZVJlc291cmNlLnJlcGxheSA9IGZ1bmN0aW9uKG9iaiwgY2FjaGUpCiAgICAgcmV0dXJuIChv
YmogaW5zdGFuY2VvZiBSZXBsYXlhYmxlUmVzb3VyY2UpID8gb2JqLnJlcGxheShjYWNoZSkud3Jh
cHBlZE9iamVjdCgpIDogb2JqOwogfQogCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gV2Vi
R0wKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBA
ZXh0ZW5kcyB7UmVzb3VyY2V9CkBAIC0xMDMzLDggKzEwNTgsMTAgQEAgV2ViR0xUZXh0dXJlUmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZnJhbWVidWZmZXJSZXNvdXJjZSA9IGds
UmVzb3VyY2UuY3VycmVudEJpbmRpbmcoZ2wuRlJBTUVCVUZGRVIpOwogICAgICAgICBpZiAoZnJh
bWVidWZmZXJSZXNvdXJjZSkKICAgICAgICAgICAgIHRoaXMucHVzaENhbGwobmV3IENhbGwoZ2xS
ZXNvdXJjZSwgImJpbmRGcmFtZWJ1ZmZlciIsIFtnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXJS
ZXNvdXJjZV0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQVNT
RVJUX05PVF9SRUFDSEVEOiBObyBGUkFNRUJVRkZFUiBib3VuZCB3aGlsZSBjYWxsaW5nIGdsLiIg
KyBjYWxsLmZ1bmN0aW9uTmFtZSgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgY2FzZS4KKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkFT
U0VSVF9OT1RfUkVBQ0hFRDogQ291bGQgbm90IHByb3Blcmx5IHByb2Nlc3MgYSBnbC4iICsgY2Fs
bC5mdW5jdGlvbk5hbWUoKSArICIgY2FsbCB3aGlsZSB0aGUgRFJBV0lORyBCVUZGRVIgaXMgYm91
bmQuIik7CisgICAgICAgIH0KICAgICAgICAgdGhpcy5wdXNoQ2FsbChjYWxsKTsKICAgICB9CiB9
CkBAIC0xMzY5LDEwICsxMzk2LDEwIEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLmZv
ck9iamVjdCA9IGZ1bmN0aW9uKG9iaikKICAgICB2YXIgcmVzb3VyY2UgPSBSZXNvdXJjZS5mb3JP
YmplY3Qob2JqKTsKICAgICBpZiAoIXJlc291cmNlIHx8IHJlc291cmNlIGluc3RhbmNlb2YgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UpCiAgICAgICAgIHJldHVybiByZXNvdXJjZTsKLSAg
ICB2YXIgY2FsbCA9IHJlc291cmNlLmNhbGxzKCk7Ci0gICAgaWYgKCFjYWxsIHx8ICFjYWxsLmxl
bmd0aCkKKyAgICB2YXIgY2FsbHMgPSByZXNvdXJjZS5jYWxscygpOworICAgIGlmICghY2FsbHMg
fHwgIWNhbGxzLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgcmVzb3VyY2UgPSBj
YWxsWzBdLnJlc291cmNlKCk7CisgICAgcmVzb3VyY2UgPSBjYWxsc1swXS5yZXNvdXJjZSgpOwog
ICAgIHJldHVybiAocmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNv
dXJjZSkgPyByZXNvdXJjZSA6IG51bGw7CiB9CiAKQEAgLTE1OTMsNyArMTYyMCw3IEBAIFdlYkdM
UmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgICAg
ICBnbC5hY3RpdmVUZXh0dXJlKGdsU3RhdGUuQUNUSVZFX1RFWFRVUkUpOwogCi0gICAgICAgIHJl
dHVybiBSZXNvdXJjZS5wcm90b3R5cGUuX2RvUmVwbGF5Q2FsbHMuY2FsbCh0aGlzLCBkYXRhLCBj
YWNoZSk7CisgICAgICAgIFJlc291cmNlLnByb3RvdHlwZS5fZG9SZXBsYXlDYWxscy5jYWxsKHRo
aXMsIGRhdGEsIGNhY2hlKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xNjYxLDMzICsxNjg4LDEz
IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKCF3cmFwRnVuY3Rpb25zKSB7CiAgICAgICAgICAgICB3cmFwRnVuY3Rpb25zID0gT2JqZWN0
LmNyZWF0ZShudWxsKTsKIAotICAgICAgICAgICAgLyoqCi0gICAgICAgICAgICAgKiBAcGFyYW0g
e3N0cmluZ30gbWV0aG9kTmFtZQotICAgICAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVz
b3VyY2VDb25zdHJ1Y3RvcgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBmdW5jdGlvbiBj
cmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbihtZXRob2ROYW1lLCByZXNvdXJjZUNvbnN0cnVjdG9y
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8qKiBAdGhpcyBSZXNvdXJjZS5XcmFw
RnVuY3Rpb24gKi8KLSAgICAgICAgICAgICAgICB3cmFwRnVuY3Rpb25zW21ldGhvZE5hbWVdID0g
ZnVuY3Rpb24oKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHdy
YXBwZWRPYmplY3QgPSB0aGlzLnJlc3VsdCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXdy
YXBwZWRPYmplY3QpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciByZXNvdXJjZSA9IG5ldyByZXNvdXJjZUNvbnN0cnVjdG9yKHdyYXBwZWRP
YmplY3QpOwotICAgICAgICAgICAgICAgICAgICB2YXIgbWFuYWdlciA9IHRoaXMuX3Jlc291cmNl
Lm1hbmFnZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1hbmFnZXIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtYW5hZ2VyLnJlZ2lzdGVyUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAg
ICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlUmVzdWx0KHJlc291cmNlLnByb3h5T2JqZWN0KCkp
OwotICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS5wdXNoQ2FsbCh0aGlzLmNhbGwoKSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgY3JlYXRlUmVzb3Vy
Y2VXcmFwRnVuY3Rpb24oImNyZWF0ZUJ1ZmZlciIsIFdlYkdMQnVmZmVyUmVzb3VyY2UpOwotICAg
ICAgICAgICAgY3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24oImNyZWF0ZVNoYWRlciIsIFdlYkdM
U2hhZGVyUmVzb3VyY2UpOwotICAgICAgICAgICAgY3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24o
ImNyZWF0ZVByb2dyYW0iLCBXZWJHTFByb2dyYW1SZXNvdXJjZSk7Ci0gICAgICAgICAgICBjcmVh
dGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlVGV4dHVyZSIsIFdlYkdMVGV4dHVyZVJlc291
cmNlKTsKLSAgICAgICAgICAgIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKCJjcmVhdGVGcmFt
ZWJ1ZmZlciIsIFdlYkdMRnJhbWVidWZmZXJSZXNvdXJjZSk7Ci0gICAgICAgICAgICBjcmVhdGVS
ZXNvdXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlUmVuZGVyYnVmZmVyIiwgV2ViR0xSZW5kZXJidWZm
ZXJSZXNvdXJjZSk7Ci0gICAgICAgICAgICBjcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiZ2V0
VW5pZm9ybUxvY2F0aW9uIiwgUmVzb3VyY2UpOworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1si
Y3JlYXRlQnVmZmVyIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0
aG9kKFdlYkdMQnVmZmVyUmVzb3VyY2UpOworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1siY3Jl
YXRlU2hhZGVyIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9k
KFdlYkdMU2hhZGVyUmVzb3VyY2UpOworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1siY3JlYXRl
UHJvZ3JhbSJdID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChX
ZWJHTFByb2dyYW1SZXNvdXJjZSk7CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVU
ZXh0dXJlIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFdl
YkdMVGV4dHVyZVJlc291cmNlKTsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZUZy
YW1lYnVmZmVyIl0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9k
KFdlYkdMRnJhbWVidWZmZXJSZXNvdXJjZSk7CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25zWyJj
cmVhdGVSZW5kZXJidWZmZXIiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3Rv
cnlNZXRob2QoV2ViR0xSZW5kZXJidWZmZXJSZXNvdXJjZSk7CisgICAgICAgICAgICB3cmFwRnVu
Y3Rpb25zWyJnZXRVbmlmb3JtTG9jYXRpb24iXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNv
dXJjZUZhY3RvcnlNZXRob2QoUmVzb3VyY2UpOwogCiAgICAgICAgICAgICAvKioKICAgICAgICAg
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lCkBAIC0xNzUzLDYgKzE3NjAsMjI3IEBA
IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKIAogV2ViR0xSZW5k
ZXJpbmdDb250ZXh0UmVzb3VyY2UucHJvdG90eXBlLl9fcHJvdG9fXyA9IFJlc291cmNlLnByb3Rv
dHlwZTsKIAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIDJEIENhbnZhcworLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtSZXNv
dXJjZX0KKyAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0CisgKiBA
cGFyYW0ge0Z1bmN0aW9ufSByZXBsYXlDb250ZXh0Q2FsbGJhY2sKKyAqLworZnVuY3Rpb24gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UoY29udGV4dCwgcmVwbGF5Q29udGV4dENhbGxi
YWNrKQoreworICAgIFJlc291cmNlLmNhbGwodGhpcywgY29udGV4dCk7CisgICAgdGhpcy5fcmVw
bGF5Q29udGV4dENhbGxiYWNrID0gcmVwbGF5Q29udGV4dENhbGxiYWNrOworICAgIHRoaXMuX2F0
dHJpYnV0ZXNTdGFjayA9IFtdOworfQorCisvKioKKyAqIEBjb25zdAorICogQHR5cGUge0FycmF5
LjxzdHJpbmc+fQorICovCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5BdHRyaWJ1
dGVQcm9wZXJ0aWVzID0gWworICAgICJzdHJva2VTdHlsZSIsCisgICAgImZpbGxTdHlsZSIsCisg
ICAgImdsb2JhbEFscGhhIiwKKyAgICAibGluZVdpZHRoIiwKKyAgICAibGluZUNhcCIsCisgICAg
ImxpbmVKb2luIiwKKyAgICAibWl0ZXJMaW1pdCIsCisgICAgInNoYWRvd09mZnNldFgiLAorICAg
ICJzaGFkb3dPZmZzZXRZIiwKKyAgICAic2hhZG93Qmx1ciIsCisgICAgInNoYWRvd0NvbG9yIiwK
KyAgICAiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIiwKKyAgICAiZm9udCIsCisgICAgInRleHRB
bGlnbiIsCisgICAgInRleHRCYXNlbGluZSIKK107CisKKy8qKgorICogQGNvbnN0CisgKiBAdHlw
ZSB7QXJyYXkuPHN0cmluZz59CisgKi8KK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNl
LlBhdGhNZXRob2RzID0gWworICAgICJiZWdpblBhdGgiLAorICAgICJtb3ZlVG8iLAorICAgICJj
bG9zZVBhdGgiLAorICAgICJsaW5lVG8iLAorICAgICJxdWFkcmF0aWNDdXJ2ZVRvIiwKKyAgICAi
YmV6aWVyQ3VydmVUbyIsCisgICAgImFyY1RvIiwKKyAgICAiYXJjIiwKKyAgICAicmVjdCIKK107
CisKKy8qKgorICogQGNvbnN0CisgKiBAdHlwZSB7QXJyYXkuPHN0cmluZz59CisgKi8KK0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLlRyYW5zZm9ybWF0aW9uTWF0cml4TWV0aG9kcyA9
IFsKKyAgICAic2NhbGUiLAorICAgICJyb3RhdGUiLAorICAgICJ0cmFuc2xhdGUiLAorICAgICJ0
cmFuc2Zvcm0iLAorICAgICJzZXRUcmFuc2Zvcm0iCitdOworCitDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisg
ICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEKKyAgICAgKiBAcGFyYW0ge0NhY2hlfSBjYWNoZQor
ICAgICAqLworICAgIF9wb3B1bGF0ZVJlcGxheWFibGVEYXRhOiBmdW5jdGlvbihkYXRhLCBjYWNo
ZSkKKyAgICB7CisgICAgICAgIGRhdGEucmVwbGF5Q29udGV4dENhbGxiYWNrID0gdGhpcy5fcmVw
bGF5Q29udGV4dENhbGxiYWNrOworICAgICAgICBkYXRhLmF0dHJpYnV0ZXNTdGFjayA9IHRoaXMu
X2F0dHJpYnV0ZXNTdGFjay5zbGljZSgwKTsKKyAgICAgICAgZGF0YS5jdXJyZW50QXR0cmlidXRl
cyA9IHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGVzU3RhdGUoKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQG92ZXJyaWRlCisgICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEKKyAgICAgKiBAcGFy
YW0ge0NhY2hlfSBjYWNoZQorICAgICAqLworICAgIF9kb1JlcGxheUNhbGxzOiBmdW5jdGlvbihk
YXRhLCBjYWNoZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjayA9
IGRhdGEucmVwbGF5Q29udGV4dENhbGxiYWNrOworICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU3Rh
Y2sgPSBkYXRhLmF0dHJpYnV0ZXNTdGFjay5zbGljZSgwKTsKKworICAgICAgICB2YXIgY3R4ID0g
UmVzb3VyY2Uud3JhcHBlZE9iamVjdCh0aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJhY2soKSk7Cisg
ICAgICAgIHRoaXMuc2V0V3JhcHBlZE9iamVjdChjdHgpOworCisgICAgICAgIHZhciBzYXZlQ2Fs
bHMgPSAwOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9IGRhdGEuY2FsbHMubGVuZ3RoOyBp
IDwgbjsgKytpKSB7CisgICAgICAgICAgICB2YXIgcmVwbGF5YWJsZUNhbGwgPSBkYXRhLmNhbGxz
W2ldOworICAgICAgICAgICAgaWYgKHJlcGxheWFibGVDYWxsLmZ1bmN0aW9uTmFtZSgpID09PSAi
c2F2ZSIpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzYXZlQ2FsbHMgPCB0aGlz
Ll9hdHRyaWJ1dGVzU3RhY2subGVuZ3RoLCAiU2l6ZSBvZiBhdHRyaWJ1dGVzIHN0YWNrIGlzIGxl
c3MgdGhhbiAnc2F2ZScgY2FsbHMiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBseUF0dHJp
YnV0ZXNTdGF0ZSh0aGlzLl9hdHRyaWJ1dGVzU3RhY2tbc2F2ZUNhbGxzKytdKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2NhbGxzLnB1c2gocmVwbGF5YWJsZUNhbGwucmVwbGF5
KGNhY2hlKSk7CisgICAgICAgIH0KKyAgICAgICAgY29uc29sZS5hc3NlcnQoc2F2ZUNhbGxzID09
PSB0aGlzLl9hdHRyaWJ1dGVzU3RhY2subGVuZ3RoLCAiU2l6ZSBvZiBhdHRyaWJ1dGVzIHN0YWNr
IHNob3VsZCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mICdzYXZlJyBjYWxscyIpOworICAgICAg
ICB0aGlzLl9hcHBseUF0dHJpYnV0ZXNTdGF0ZShkYXRhLmN1cnJlbnRBdHRyaWJ1dGVzKTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDYWxsfSBjYWxsCisgICAgICovCisgICAg
cHVzaENhbGxfc2V0VHJhbnNmb3JtOiBmdW5jdGlvbihjYWxsKQorICAgIHsKKyAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSBvYnNvbGV0ZSB0cmFuc2Zvcm0gbWF0cml4IG1ldGhvZHMuCisgICAgICAg
IHRoaXMucHVzaENhbGwoY2FsbCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
Q2FsbH0gY2FsbAorICAgICAqLworICAgIHB1c2hDYWxsX2JlZ2luUGF0aDogZnVuY3Rpb24oY2Fs
bCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb2Jzb2xldGUgcGF0aCBtZXRob2Rz
LgorICAgICAgICB0aGlzLnB1c2hDYWxsKGNhbGwpOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge0NhbGx9IGNhbGwKKyAgICAgKi8KKyAgICBwdXNoQ2FsbF9zYXZlOiBmdW5jdGlv
bihjYWxsKQorICAgIHsKKyAgICAgICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrLnB1c2godGhpcy5f
Y3VycmVudEF0dHJpYnV0ZXNTdGF0ZSgpKTsKKyAgICAgICAgdGhpcy5wdXNoQ2FsbChjYWxsKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDYWxsfSBjYWxsCisgICAgICovCisg
ICAgcHVzaENhbGxfcmVzdG9yZTogZnVuY3Rpb24oY2FsbCkKKyAgICB7CisgICAgICAgIHRoaXMu
X2F0dHJpYnV0ZXNTdGFjay5wb3AoKTsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBvYnNvbGV0
ZSBjbGlwLHNhdmUgbWV0aG9kcy4KKyAgICAgICAgdGhpcy5wdXNoQ2FsbChjYWxsKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7IU9iamVjdC48c3RyaW5nLCBzdHJpbmc+fQor
ICAgICAqLworICAgIF9jdXJyZW50QXR0cmlidXRlc1N0YXRlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgY3R4ID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7CisgICAgICAgIHZhciBzdGF0
ZSA9IHt9OworICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5BdHRyaWJ1
dGVQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24oYXR0cmlidXRlKSB7CisgICAgICAgICAgICBz
dGF0ZVthdHRyaWJ1dGVdID0gY3R4W2F0dHJpYnV0ZV07CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm4gc3RhdGU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7IU9iamVjdC48
c3RyaW5nLCBzdHJpbmc+fSBzdGF0ZQorICAgICAqLworICAgIF9hcHBseUF0dHJpYnV0ZXNTdGF0
ZTogZnVuY3Rpb24oc3RhdGUpCisgICAgeworICAgICAgICB2YXIgY3R4ID0gdGhpcy53cmFwcGVk
T2JqZWN0KCk7CisgICAgICAgIE9iamVjdC5rZXlzKHN0YXRlKS5mb3JFYWNoKGZ1bmN0aW9uKGF0
dHJpYnV0ZSkgeworICAgICAgICAgICAgY3R4W2F0dHJpYnV0ZV0gPSBzdGF0ZVthdHRyaWJ1dGVd
OworICAgICAgICB9KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAg
ICogQHJldHVybiB7T2JqZWN0LjxzdHJpbmcsIEZ1bmN0aW9uPn0KKyAgICAgKi8KKyAgICBfY3Vz
dG9tV3JhcEZ1bmN0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHdyYXBGdW5j
dGlvbnMgPSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5fd3JhcEZ1bmN0aW9uczsK
KyAgICAgICAgaWYgKCF3cmFwRnVuY3Rpb25zKSB7CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25z
ID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1siY3Jl
YXRlTGluZWFyR3JhZGllbnQiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3Rv
cnlNZXRob2QoUmVzb3VyY2UpOworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1siY3JlYXRlUmFk
aWFsR3JhZGllbnQiXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRo
b2QoUmVzb3VyY2UpOworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1siY3JlYXRlUGF0dGVybiJd
ID0gUmVzb3VyY2UuV3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChSZXNvdXJjZSk7
CisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhv
ZE5hbWUKKyAgICAgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb249fSBmdW5jCisgICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXRlTW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKG1l
dGhvZE5hbWUsIGZ1bmMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGZ1bmMp
IHsKKyAgICAgICAgICAgICAgICAgICAgLyoqIEB0aGlzIFJlc291cmNlLldyYXBGdW5jdGlvbiAq
LworICAgICAgICAgICAgICAgICAgICB3cmFwRnVuY3Rpb25zW21ldGhvZE5hbWVdID0gZnVuY3Rp
b24oKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5j
LmNhbGwodGhpcy5fcmVzb3VyY2UsIHRoaXMuY2FsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qKiBAdGhp
cyBSZXNvdXJjZS5XcmFwRnVuY3Rpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgd3JhcEZ1bmN0
aW9uc1ttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2UucHVzaENhbGwodGhpcy5jYWxsKCkp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuVHJhbnNmb3Jt
YXRpb25NYXRyaXhNZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kTmFtZSkgeworICAgICAg
ICAgICAgICAgIHZhciBmdW5jID0gbWV0aG9kTmFtZSA9PT0gInNldFRyYW5zZm9ybSIgPyB0aGlz
LnB1c2hDYWxsX3NldFRyYW5zZm9ybSA6IG51bGw7CisgICAgICAgICAgICAgICAgc3RhdGVNb2Rp
ZnlpbmdXcmFwRnVuY3Rpb24obWV0aG9kTmFtZSwgZnVuYyk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLlBhdGhNZXRob2RzLmZv
ckVhY2goZnVuY3Rpb24obWV0aG9kTmFtZSkgeworICAgICAgICAgICAgICAgIHZhciBmdW5jID0g
bWV0aG9kTmFtZSA9PT0gImJlZ2luUGF0aCIgPyB0aGlzLnB1c2hDYWxsX2JlZ2luUGF0aCA6IG51
bGw7CisgICAgICAgICAgICAgICAgc3RhdGVNb2RpZnlpbmdXcmFwRnVuY3Rpb24obWV0aG9kTmFt
ZSwgZnVuYyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHN0YXRlTW9kaWZ5aW5nV3Jh
cEZ1bmN0aW9uKCJzYXZlIiwgdGhpcy5wdXNoQ2FsbF9zYXZlKTsKKyAgICAgICAgICAgIHN0YXRl
TW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKCJyZXN0b3JlIiwgdGhpcy5wdXNoQ2FsbF9yZXN0b3JlKTsK
KyAgICAgICAgICAgIHN0YXRlTW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKCJjbGlwIik7CisKKyAgICAg
ICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLl93cmFwRnVuY3Rpb25zID0g
d3JhcEZ1bmN0aW9uczsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gd3JhcEZ1bmN0aW9uczsK
KyAgICB9Cit9OworCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5wcm90b3R5cGUu
X19wcm90b19fID0gUmVzb3VyY2UucHJvdG90eXBlOworCiAvKioKICAqIEBjb25zdHJ1Y3Rvcgog
ICovCkBAIC0xOTQyLDcgKzIxNzAsNyBAQCBSZXNvdXJjZVRyYWNraW5nTWFuYWdlci5wcm90b3R5
cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtDYWxsfSBjYWxsCiAgICAgICovCi0gICAg
cmVwb3J0Q2FsbDogZnVuY3Rpb24oY2FsbCkKKyAgICBjYXB0dXJlQ2FsbDogZnVuY3Rpb24oY2Fs
bCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY2FwdHVyaW5nKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTk4OCw4ICsyMjE2LDE4IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IFJlc291cmNlLmZvck9iamVjdChnbENvbnRl
eHQpIHx8IG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZShnbENvbnRleHQsIHRoaXMu
X2NvbnN0cnVjdFdlYkdMUmVwbGF5Q29udGV4dC5iaW5kKHRoaXMsIGdsQ29udGV4dCkpOwogICAg
ICAgICB0aGlzLl9tYW5hZ2VyLnJlZ2lzdGVyUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICB2
YXIgcHJveHkgPSByZXNvdXJjZS5wcm94eU9iamVjdCgpOwotICAgICAgICByZXR1cm4gcHJveHk7
CisgICAgICAgIHJldHVybiByZXNvdXJjZS5wcm94eU9iamVjdCgpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dAorICAg
ICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KKyAgICB3cmFwQ2FudmFzMkRDb250ZXh0OiBm
dW5jdGlvbihjb250ZXh0KQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gUmVzb3VyY2Uu
Zm9yT2JqZWN0KGNvbnRleHQpIHx8IG5ldyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJj
ZShjb250ZXh0LCB0aGlzLl9jb25zdHJ1Y3RDYW52YXMyRFJlcGxheUNvbnRleHQuYmluZCh0aGlz
LCBjb250ZXh0KSk7CisgICAgICAgIHRoaXMuX21hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZShyZXNv
dXJjZSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5wcm94eU9iamVjdCgpOwogICAgIH0sCiAK
ICAgICBjYXB0dXJlRnJhbWU6IGZ1bmN0aW9uKCkKQEAgLTIxMDQsNiArMjM0MiwyOSBAQCBJbmpl
Y3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUmVzZXQgdGhl
IHJlcGxheSBHTCBzdGF0ZSBhbmQgY2xlYXIgdGhlIGNhbnZhcy4KICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gcmVwbGF5Q29udGV4dDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IG9yaWdpbmFsQ29udGV4dAorICAgICAqIEByZXR1
cm4ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0KKyAgICAgKi8KKyAgICBfY29uc3RydWN0Q2Fu
dmFzMkRSZXBsYXlDb250ZXh0OiBmdW5jdGlvbihvcmlnaW5hbENvbnRleHQpCisgICAgeworICAg
ICAgICB2YXIgcmVwbGF5Q29udGV4dCA9IG9yaWdpbmFsQ29udGV4dFsiX19yZXBsYXlDb250ZXh0
Il07CisgICAgICAgIGlmICghcmVwbGF5Q29udGV4dCkgeworICAgICAgICAgICAgdmFyIGNhbnZh
cyA9IG9yaWdpbmFsQ29udGV4dC5jYW52YXMuY2xvbmVOb2RlKHRydWUpOworICAgICAgICAgICAg
cmVwbGF5Q29udGV4dCA9IC8qKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSAqLyBS
ZXNvdXJjZS53cmFwcGVkT2JqZWN0KGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpKTsKKyAgICAgICAg
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcmlnaW5hbENvbnRleHQsICJfX3JlcGxheUNvbnRl
eHQiLCB7CisgICAgICAgICAgICAgICAgdmFsdWU6IHJlcGxheUNvbnRleHQsCisgICAgICAgICAg
ICAgICAgd3JpdGFibGU6IGZhbHNlLAorICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNl
LAorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQorICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB0aGlzLl9yZXBsYXlDb250ZXh0ID0gcmVwbGF5Q29udGV4dDsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDbGVhciB0aGUgY2FudmFzLgorICAgICAg
ICB9CisgICAgICAgIHJldHVybiByZXBsYXlDb250ZXh0OwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165387</attachid>
            <date>2012-09-24 08:25:45 -0700</date>
            <delta_ts>2012-09-24 09:59:00 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-96746-20120924192506.patch</filename>
            <type>text/plain</type>
            <size>16564</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk2ZGNlNGUzYzczYTEz
OWI1MWFhMDhhYTBlZGJmMDUzYzVjZjc4MS4uY2IzZWQ1ZjEwNjE4NTdkZTkzMGQ1YjQzYzNhNTU5
YjBjNWFkNzdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gRmlyc3Qgc3RlcCB0b3dhcmRzIDJEIGNhbnZhcyBpbnN0cnVtZW50YXRpb24g
aW4gaW5qZWN0ZWQgc2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05Njc0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZpcnN0IHN0ZXAgdG93YXJkcyB0aGUgMkQgY2FudmFzIGluc3RydW1lbnRhdGlv
biBmcm9tIHRoZSBXZWJHTCBpbmplY3RlZCBzY3JpcHQgbW9kdWxlIHNpZGUuCisgICAgICAgIFdl
IHRyYWNlIGFuZCBzYXZlIGFsbCBjYWxscyB0aGF0IGFmZmVjdCB0aGUgMkQgY2FudmFzIGNvbnRl
eHQgc3RhdGUgYW5kIGl0J3MgcmVzb3VyY2VzIChHcmFkaWVudCBhbmQgUGF0dGVybikKKyAgICAg
ICAgc28gdGhhdCB3ZSBjb3VsZCByZXBsYXkgdGhlIGNvbnRleHQgYW5kIHJlc291cmNlcyBzdGF0
ZXMgbGF0ZXIuCisgICAgICAgIFRoZSAyRCBjYW52YXMgY29udGV4dCBzdGF0ZSBjb25zaXN0cyBv
ZjoKKyAgICAgICAgLSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeAorICAgICAgICAtIGN1
cnJlbnQgZGVmYXVsdCBwYXRoCisgICAgICAgIC0gY3VycmVudCBjbGlwcGluZyByZWdpb24gKGFm
ZmVjdGVkIGJ5IHRoZSAiY2xpcCIgY29tbWFuZCkKKyAgICAgICAgLSBjdXJyZW50IHZhbHVlcyBv
ZiB0aGUgY29udGV4dCBhdHRyaWJ1dGVzIChsaWtlIHN0cm9rZVN0eWxlLCBmaWxsU3R5bGUsIGV0
Yy4pCisgICAgICAgIC0gYSBzdGFjayBvZiBzYXZlZCBkcmF3aW5nIHN0YXRlcyAoYWZmZWN0ZWQg
YnkgdGhlICJzYXZlIiBhbmQgInJlc3RvcmUiIGNvbW1hbmRzKQorCisgICAgICAgICogaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzOgorICAgICAgICAoLik6CisK
IDIwMTItMDktMjQgIEpvbmF0aGFuIExpdSAgPG5ldDE0N0BnbWFpbC5jb20+CiAKICAgICAgICAg
VXNlIHVuc2lnbmVkIGNoYXIgZm9yIGJpdGZpZWxkIGluc3RlYWQgb2YgdW5zaWduZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1
bGVTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52
YXNNb2R1bGVTb3VyY2UuanMKaW5kZXggNjExNTBiZWU0NjIzZmIxYmRhYWJlZjI4MDBkZGViNzQ0
MzhhMDA1Zi4uMjZhZmVlYjU0ZmVmZDJkNGJiODc0NzAzZTM3MjFmYTQ4ZWJiMDY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxl
U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZVNvdXJjZS5qcwpAQCAtNzQzLDcgKzc0Myw3IEBAIFJlc291cmNlLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGlmIChpc0NhcHR1cmluZykgewogICAgICAgICAgICAgICAgIHZh
ciBjYWxsID0gd3JhcEZ1bmN0aW9uLmNhbGwoKTsKICAgICAgICAgICAgICAgICBjYWxsLnNldFN0
YWNrVHJhY2UoU3RhY2tUcmFjZS5jcmVhdGUoMSwgYXJndW1lbnRzLmNhbGxlZSkpOwotICAgICAg
ICAgICAgICAgIG1hbmFnZXIucmVwb3J0Q2FsbChjYWxsKTsKKyAgICAgICAgICAgICAgICBtYW5h
Z2VyLmNhcHR1cmVDYWxsKGNhbGwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IHdyYXBGdW5jdGlvbi5yZXN1bHQoKTsKICAgICAgICAgfTsKQEAgLTc2Nyw3ICs3NjcsNyBAQCBS
ZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb3JpZ2luYWxG
dW5jdGlvbi5hcHBseShvcmlnaW5hbE9iamVjdCwgYXJndW1lbnRzKTsKICAgICAgICAgICAgIHZh
ciBzdGFja1RyYWNlID0gU3RhY2tUcmFjZS5jcmVhdGUoMSwgYXJndW1lbnRzLmNhbGxlZSk7CiAg
ICAgICAgICAgICB2YXIgY2FsbCA9IG5ldyBDYWxsKHJlc291cmNlLCBmdW5jdGlvbk5hbWUsIGFy
Z3VtZW50cywgcmVzdWx0LCBzdGFja1RyYWNlKTsKLSAgICAgICAgICAgIG1hbmFnZXIucmVwb3J0
Q2FsbChjYWxsKTsKKyAgICAgICAgICAgIG1hbmFnZXIuY2FwdHVyZUNhbGwoY2FsbCk7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9OwogICAgIH0sCkBAIC04MzMsNiArODMz
LDI3IEBAIFJlc291cmNlLldyYXBGdW5jdGlvbi5wcm90b3R5cGUgPSB7CiB9CiAKIC8qKgorICog
QHBhcmFtIHshRnVuY3Rpb259IHJlc291cmNlQ29uc3RydWN0b3IKKyAqIEByZXR1cm4ge0Z1bmN0
aW9ufQorICovCitSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kID0g
ZnVuY3Rpb24ocmVzb3VyY2VDb25zdHJ1Y3RvcikKK3sKKyAgICAvKiogQHRoaXMgUmVzb3VyY2Uu
V3JhcEZ1bmN0aW9uICovCisgICAgcmV0dXJuIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZh
ciB3cmFwcGVkT2JqZWN0ID0gdGhpcy5yZXN1bHQoKTsKKyAgICAgICAgaWYgKCF3cmFwcGVkT2Jq
ZWN0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgcmVzb3VyY2UgPSBuZXcgcmVz
b3VyY2VDb25zdHJ1Y3Rvcih3cmFwcGVkT2JqZWN0KTsKKyAgICAgICAgdmFyIG1hbmFnZXIgPSB0
aGlzLl9yZXNvdXJjZS5tYW5hZ2VyKCk7CisgICAgICAgIGlmIChtYW5hZ2VyKQorICAgICAgICAg
ICAgbWFuYWdlci5yZWdpc3RlclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5vdmVy
cmlkZVJlc3VsdChyZXNvdXJjZS5wcm94eU9iamVjdCgpKTsKKyAgICAgICAgcmVzb3VyY2UucHVz
aENhbGwodGhpcy5jYWxsKCkpOworICAgIH0KK30KKworLyoqCiAgKiBAY29uc3RydWN0b3IKICAq
IEBwYXJhbSB7UmVzb3VyY2V9IG9yaWdpbmFsUmVzb3VyY2UKICAqIEBwYXJhbSB7T2JqZWN0fSBk
YXRhCkBAIC04NjcsNiArODg4LDEwIEBAIFJlcGxheWFibGVSZXNvdXJjZS5yZXBsYXkgPSBmdW5j
dGlvbihvYmosIGNhY2hlKQogICAgIHJldHVybiAob2JqIGluc3RhbmNlb2YgUmVwbGF5YWJsZVJl
c291cmNlKSA/IG9iai5yZXBsYXkoY2FjaGUpLndyYXBwZWRPYmplY3QoKSA6IG9iajsKIH0KIAor
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFdlYkdMCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LworCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1Jlc291cmNlfQpAQCAtMTAz
Myw4ICsxMDU4LDEwIEBAIFdlYkdMVGV4dHVyZVJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdmFyIGZyYW1lYnVmZmVyUmVzb3VyY2UgPSBnbFJlc291cmNlLmN1cnJlbnRCaW5kaW5nKGds
LkZSQU1FQlVGRkVSKTsKICAgICAgICAgaWYgKGZyYW1lYnVmZmVyUmVzb3VyY2UpCiAgICAgICAg
ICAgICB0aGlzLnB1c2hDYWxsKG5ldyBDYWxsKGdsUmVzb3VyY2UsICJiaW5kRnJhbWVidWZmZXIi
LCBbZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyUmVzb3VyY2VdKSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkFTU0VSVF9OT1RfUkVBQ0hFRDogTm8gRlJBTUVC
VUZGRVIgYm91bmQgd2hpbGUgY2FsbGluZyBnbC4iICsgY2FsbC5mdW5jdGlvbk5hbWUoKSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIGNhc2Uu
CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJBU1NFUlRfTk9UX1JFQUNIRUQ6IENvdWxkIG5v
dCBwcm9wZXJseSBwcm9jZXNzIGEgZ2wuIiArIGNhbGwuZnVuY3Rpb25OYW1lKCkgKyAiIGNhbGwg
d2hpbGUgdGhlIERSQVdJTkcgQlVGRkVSIGlzIGJvdW5kLiIpOworICAgICAgICB9CiAgICAgICAg
IHRoaXMucHVzaENhbGwoY2FsbCk7CiAgICAgfQogfQpAQCAtMTM2OSwxMCArMTM5NiwxMCBAQCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5mb3JPYmplY3QgPSBmdW5jdGlvbihvYmopCiAg
ICAgdmFyIHJlc291cmNlID0gUmVzb3VyY2UuZm9yT2JqZWN0KG9iaik7CiAgICAgaWYgKCFyZXNv
dXJjZSB8fCByZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNl
KQogICAgICAgICByZXR1cm4gcmVzb3VyY2U7Ci0gICAgdmFyIGNhbGwgPSByZXNvdXJjZS5jYWxs
cygpOwotICAgIGlmICghY2FsbCB8fCAhY2FsbC5sZW5ndGgpCisgICAgdmFyIGNhbGxzID0gcmVz
b3VyY2UuY2FsbHMoKTsKKyAgICBpZiAoIWNhbGxzIHx8ICFjYWxscy5sZW5ndGgpCiAgICAgICAg
IHJldHVybiBudWxsOwotICAgIHJlc291cmNlID0gY2FsbFswXS5yZXNvdXJjZSgpOworICAgIHJl
c291cmNlID0gY2FsbHNbMF0ucmVzb3VyY2UoKTsKICAgICByZXR1cm4gKHJlc291cmNlIGluc3Rh
bmNlb2YgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UpID8gcmVzb3VyY2UgOiBudWxsOwog
fQogCkBAIC0xNTkzLDcgKzE2MjAsNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbFN0YXRl
LkFDVElWRV9URVhUVVJFKTsKIAotICAgICAgICByZXR1cm4gUmVzb3VyY2UucHJvdG90eXBlLl9k
b1JlcGxheUNhbGxzLmNhbGwodGhpcywgZGF0YSwgY2FjaGUpOworICAgICAgICBSZXNvdXJjZS5w
cm90b3R5cGUuX2RvUmVwbGF5Q2FsbHMuY2FsbCh0aGlzLCBkYXRhLCBjYWNoZSk7CiAgICAgfSwK
IAogICAgIC8qKgpAQCAtMTY2MSwzMyArMTY4OCwxMyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRS
ZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghd3JhcEZ1bmN0aW9ucykgewogICAg
ICAgICAgICAgd3JhcEZ1bmN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAKLSAgICAgICAg
ICAgIC8qKgotICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUKLSAgICAg
ICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc291cmNlQ29uc3RydWN0b3IKLSAgICAgICAg
ICAgICAqLwotICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24o
bWV0aG9kTmFtZSwgcmVzb3VyY2VDb25zdHJ1Y3RvcikKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAvKiogQHRoaXMgUmVzb3VyY2UuV3JhcEZ1bmN0aW9uICovCi0gICAgICAgICAgICAg
ICAgd3JhcEZ1bmN0aW9uc1ttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB3cmFwcGVkT2JqZWN0ID0gdGhpcy5yZXN1bHQo
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVkT2JqZWN0KQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBu
ZXcgcmVzb3VyY2VDb25zdHJ1Y3Rvcih3cmFwcGVkT2JqZWN0KTsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIG1hbmFnZXIgPSB0aGlzLl9yZXNvdXJjZS5tYW5hZ2VyKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChtYW5hZ2VyKQotICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5yZWdp
c3RlclJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVycmlk
ZVJlc3VsdChyZXNvdXJjZS5wcm94eU9iamVjdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgcmVz
b3VyY2UucHVzaENhbGwodGhpcy5jYWxsKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKCJjcmVhdGVCdWZm
ZXIiLCBXZWJHTEJ1ZmZlclJlc291cmNlKTsKLSAgICAgICAgICAgIGNyZWF0ZVJlc291cmNlV3Jh
cEZ1bmN0aW9uKCJjcmVhdGVTaGFkZXIiLCBXZWJHTFNoYWRlclJlc291cmNlKTsKLSAgICAgICAg
ICAgIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKCJjcmVhdGVQcm9ncmFtIiwgV2ViR0xQcm9n
cmFtUmVzb3VyY2UpOwotICAgICAgICAgICAgY3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24oImNy
ZWF0ZVRleHR1cmUiLCBXZWJHTFRleHR1cmVSZXNvdXJjZSk7Ci0gICAgICAgICAgICBjcmVhdGVS
ZXNvdXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlRnJhbWVidWZmZXIiLCBXZWJHTEZyYW1lYnVmZmVy
UmVzb3VyY2UpOwotICAgICAgICAgICAgY3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24oImNyZWF0
ZVJlbmRlcmJ1ZmZlciIsIFdlYkdMUmVuZGVyYnVmZmVyUmVzb3VyY2UpOwotICAgICAgICAgICAg
Y3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24oImdldFVuaWZvcm1Mb2NhdGlvbiIsIFJlc291cmNl
KTsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZUJ1ZmZlciJdID0gUmVzb3VyY2Uu
V3JhcEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJHTEJ1ZmZlclJlc291cmNlKTsK
KyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVNoYWRlciJdID0gUmVzb3VyY2UuV3Jh
cEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJHTFNoYWRlclJlc291cmNlKTsKKyAg
ICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVByb2dyYW0iXSA9IFJlc291cmNlLldyYXBG
dW5jdGlvbi5yZXNvdXJjZUZhY3RvcnlNZXRob2QoV2ViR0xQcm9ncmFtUmVzb3VyY2UpOworICAg
ICAgICAgICAgd3JhcEZ1bmN0aW9uc1siY3JlYXRlVGV4dHVyZSJdID0gUmVzb3VyY2UuV3JhcEZ1
bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJHTFRleHR1cmVSZXNvdXJjZSk7CisgICAg
ICAgICAgICB3cmFwRnVuY3Rpb25zWyJjcmVhdGVGcmFtZWJ1ZmZlciJdID0gUmVzb3VyY2UuV3Jh
cEZ1bmN0aW9uLnJlc291cmNlRmFjdG9yeU1ldGhvZChXZWJHTEZyYW1lYnVmZmVyUmVzb3VyY2Up
OworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1siY3JlYXRlUmVuZGVyYnVmZmVyIl0gPSBSZXNv
dXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFdlYkdMUmVuZGVyYnVmZmVy
UmVzb3VyY2UpOworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1siZ2V0VW5pZm9ybUxvY2F0aW9u
Il0gPSBSZXNvdXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFJlc291cmNl
KTsKIAogICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0
aG9kTmFtZQpAQCAtMTc1Myw2ICsxNzYwLDIyNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNv
dXJjZS5wcm90b3R5cGUgPSB7CiAKIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBSZXNvdXJjZS5wcm90b3R5cGU7CiAKKy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCisvLyAyRCBDYW52YXMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7UmVzb3VyY2V9CisgKiBAcGFyYW0ge0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRH0gY29udGV4dAorICogQHBhcmFtIHtGdW5jdGlvbn0gcmVwbGF5Q29u
dGV4dENhbGxiYWNrCisgKi8KK2Z1bmN0aW9uIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFJlc291
cmNlKGNvbnRleHQsIHJlcGxheUNvbnRleHRDYWxsYmFjaykKK3sKKyAgICBSZXNvdXJjZS5jYWxs
KHRoaXMsIGNvbnRleHQpOworICAgIHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjayA9IHJlcGxh
eUNvbnRleHRDYWxsYmFjazsKKyAgICB0aGlzLl9hdHRyaWJ1dGVzU3RhY2sgPSBbXTsKK30KKwor
LyoqCisgKiBAY29uc3QKKyAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn0KKyAqLworQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuQXR0cmlidXRlUHJvcGVydGllcyA9IFsKKyAgICAic3Ry
b2tlU3R5bGUiLAorICAgICJmaWxsU3R5bGUiLAorICAgICJnbG9iYWxBbHBoYSIsCisgICAgImxp
bmVXaWR0aCIsCisgICAgImxpbmVDYXAiLAorICAgICJsaW5lSm9pbiIsCisgICAgIm1pdGVyTGlt
aXQiLAorICAgICJzaGFkb3dPZmZzZXRYIiwKKyAgICAic2hhZG93T2Zmc2V0WSIsCisgICAgInNo
YWRvd0JsdXIiLAorICAgICJzaGFkb3dDb2xvciIsCisgICAgImdsb2JhbENvbXBvc2l0ZU9wZXJh
dGlvbiIsCisgICAgImZvbnQiLAorICAgICJ0ZXh0QWxpZ24iLAorICAgICJ0ZXh0QmFzZWxpbmUi
CitdOworCisvKioKKyAqIEBjb25zdAorICogQHR5cGUge0FycmF5LjxzdHJpbmc+fQorICovCitD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5QYXRoTWV0aG9kcyA9IFsKKyAgICAiYmVn
aW5QYXRoIiwKKyAgICAibW92ZVRvIiwKKyAgICAiY2xvc2VQYXRoIiwKKyAgICAibGluZVRvIiwK
KyAgICAicXVhZHJhdGljQ3VydmVUbyIsCisgICAgImJlemllckN1cnZlVG8iLAorICAgICJhcmNU
byIsCisgICAgImFyYyIsCisgICAgInJlY3QiCitdOworCisvKioKKyAqIEBjb25zdAorICogQHR5
cGUge0FycmF5LjxzdHJpbmc+fQorICovCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJj
ZS5UcmFuc2Zvcm1hdGlvbk1hdHJpeE1ldGhvZHMgPSBbCisgICAgInNjYWxlIiwKKyAgICAicm90
YXRlIiwKKyAgICAidHJhbnNsYXRlIiwKKyAgICAidHJhbnNmb3JtIiwKKyAgICAic2V0VHJhbnNm
b3JtIgorXTsKKworQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90eXBlID0g
eworICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRh
CisgICAgICogQHBhcmFtIHtDYWNoZX0gY2FjaGUKKyAgICAgKi8KKyAgICBfcG9wdWxhdGVSZXBs
YXlhYmxlRGF0YTogZnVuY3Rpb24oZGF0YSwgY2FjaGUpCisgICAgeworICAgICAgICBkYXRhLnJl
cGxheUNvbnRleHRDYWxsYmFjayA9IHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjazsKKyAgICAg
ICAgZGF0YS5hdHRyaWJ1dGVzU3RhY2sgPSB0aGlzLl9hdHRyaWJ1dGVzU3RhY2suc2xpY2UoMCk7
CisgICAgICAgIGRhdGEuY3VycmVudEF0dHJpYnV0ZXMgPSB0aGlzLl9jdXJyZW50QXR0cmlidXRl
c1N0YXRlKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBw
YXJhbSB7T2JqZWN0fSBkYXRhCisgICAgICogQHBhcmFtIHtDYWNoZX0gY2FjaGUKKyAgICAgKi8K
KyAgICBfZG9SZXBsYXlDYWxsczogZnVuY3Rpb24oZGF0YSwgY2FjaGUpCisgICAgeworICAgICAg
ICB0aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJhY2sgPSBkYXRhLnJlcGxheUNvbnRleHRDYWxsYmFj
azsKKyAgICAgICAgdGhpcy5fYXR0cmlidXRlc1N0YWNrID0gZGF0YS5hdHRyaWJ1dGVzU3RhY2su
c2xpY2UoMCk7CisKKyAgICAgICAgdmFyIGN0eCA9IFJlc291cmNlLndyYXBwZWRPYmplY3QodGhp
cy5fcmVwbGF5Q29udGV4dENhbGxiYWNrKCkpOworICAgICAgICB0aGlzLnNldFdyYXBwZWRPYmpl
Y3QoY3R4KTsKKworICAgICAgICB2YXIgc2F2ZUNhbGxzID0gMDsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDAsIG4gPSBkYXRhLmNhbGxzLmxlbmd0aDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAg
dmFyIHJlcGxheWFibGVDYWxsID0gZGF0YS5jYWxsc1tpXTsKKyAgICAgICAgICAgIGlmIChyZXBs
YXlhYmxlQ2FsbC5mdW5jdGlvbk5hbWUoKSA9PT0gInNhdmUiKSB7CisgICAgICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoc2F2ZUNhbGxzIDwgdGhpcy5fYXR0cmlidXRlc1N0YWNrLmxlbmd0aCwg
IlNpemUgb2YgYXR0cmlidXRlcyBzdGFjayBpcyBsZXNzIHRoYW4gJ3NhdmUnIGNhbGxzIik7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlBdHRyaWJ1dGVzU3RhdGUodGhpcy5fYXR0cmlidXRl
c1N0YWNrW3NhdmVDYWxscysrXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9j
YWxscy5wdXNoKHJlcGxheWFibGVDYWxsLnJlcGxheShjYWNoZSkpOworICAgICAgICB9CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHNhdmVDYWxscyA9PT0gdGhpcy5fYXR0cmlidXRlc1N0YWNrLmxl
bmd0aCwgIlNpemUgb2YgYXR0cmlidXRlcyBzdGFjayBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIG51
bWJlciBvZiAnc2F2ZScgY2FsbHMiKTsKKyAgICAgICAgdGhpcy5fYXBwbHlBdHRyaWJ1dGVzU3Rh
dGUoZGF0YS5jdXJyZW50QXR0cmlidXRlcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Q2FsbH0gY2FsbAorICAgICAqLworICAgIHB1c2hDYWxsX3NldFRyYW5zZm9ybTogZnVu
Y3Rpb24oY2FsbCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb2Jzb2xldGUgdHJh
bnNmb3JtIG1hdHJpeCBtZXRob2RzLgorICAgICAgICB0aGlzLnB1c2hDYWxsKGNhbGwpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0NhbGx9IGNhbGwKKyAgICAgKi8KKyAgICBw
dXNoQ2FsbF9iZWdpblBhdGg6IGZ1bmN0aW9uKGNhbGwpCisgICAgeworICAgICAgICAvLyBGSVhN
RTogUmVtb3ZlIG9ic29sZXRlIHBhdGggbWV0aG9kcy4KKyAgICAgICAgdGhpcy5wdXNoQ2FsbChj
YWxsKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDYWxsfSBjYWxsCisgICAg
ICovCisgICAgcHVzaENhbGxfc2F2ZTogZnVuY3Rpb24oY2FsbCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2F0dHJpYnV0ZXNTdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGVzU3RhdGUoKSk7
CisgICAgICAgIHRoaXMucHVzaENhbGwoY2FsbCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7Q2FsbH0gY2FsbAorICAgICAqLworICAgIHB1c2hDYWxsX3Jlc3RvcmU6IGZ1bmN0
aW9uKGNhbGwpCisgICAgeworICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU3RhY2sucG9wKCk7Cisg
ICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb2Jzb2xldGUgY2xpcCxzYXZlIG1ldGhvZHMuCisgICAg
ICAgIHRoaXMucHVzaENhbGwoY2FsbCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4geyFPYmplY3QuPHN0cmluZywgc3RyaW5nPn0KKyAgICAgKi8KKyAgICBfY3VycmVudEF0dHJp
YnV0ZXNTdGF0ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGN0eCA9IHRoaXMud3Jh
cHBlZE9iamVjdCgpOworICAgICAgICB2YXIgc3RhdGUgPSB7fTsKKyAgICAgICAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UuQXR0cmlidXRlUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0
aW9uKGF0dHJpYnV0ZSkgeworICAgICAgICAgICAgc3RhdGVbYXR0cmlidXRlXSA9IGN0eFthdHRy
aWJ1dGVdOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHN0YXRlOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0geyFPYmplY3QuPHN0cmluZywgc3RyaW5nPn0gc3RhdGUKKyAg
ICAgKi8KKyAgICBfYXBwbHlBdHRyaWJ1dGVzU3RhdGU6IGZ1bmN0aW9uKHN0YXRlKQorICAgIHsK
KyAgICAgICAgdmFyIGN0eCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOworICAgICAgICBPYmplY3Qu
a2V5cyhzdGF0ZSkuZm9yRWFjaChmdW5jdGlvbihhdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgIGN0
eFthdHRyaWJ1dGVdID0gc3RhdGVbYXR0cmlidXRlXTsKKyAgICAgICAgfSk7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEByZXR1cm4ge09iamVjdC48c3RyaW5n
LCBGdW5jdGlvbj59CisgICAgICovCisgICAgX2N1c3RvbVdyYXBGdW5jdGlvbnM6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciB3cmFwRnVuY3Rpb25zID0gQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEUmVzb3VyY2UuX3dyYXBGdW5jdGlvbnM7CisgICAgICAgIGlmICghd3JhcEZ1bmN0aW9u
cykgeworICAgICAgICAgICAgd3JhcEZ1bmN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7CisK
KyAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZUxpbmVhckdyYWRpZW50Il0gPSBSZXNv
dXJjZS5XcmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFJlc291cmNlKTsKKyAgICAg
ICAgICAgIHdyYXBGdW5jdGlvbnNbImNyZWF0ZVJhZGlhbEdyYWRpZW50Il0gPSBSZXNvdXJjZS5X
cmFwRnVuY3Rpb24ucmVzb3VyY2VGYWN0b3J5TWV0aG9kKFJlc291cmNlKTsKKyAgICAgICAgICAg
IHdyYXBGdW5jdGlvbnNbImNyZWF0ZVBhdHRlcm4iXSA9IFJlc291cmNlLldyYXBGdW5jdGlvbi5y
ZXNvdXJjZUZhY3RvcnlNZXRob2QoUmVzb3VyY2UpOworCisgICAgICAgICAgICAvKioKKyAgICAg
ICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lCisgICAgICAgICAgICAgKiBAcGFy
YW0ge0Z1bmN0aW9uPX0gZnVuYworICAgICAgICAgICAgICovCisgICAgICAgICAgICBmdW5jdGlv
biBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbihtZXRob2ROYW1lLCBmdW5jKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChmdW5jKSB7CisgICAgICAgICAgICAgICAgICAgIC8q
KiBAdGhpcyBSZXNvdXJjZS5XcmFwRnVuY3Rpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgd3Jh
cEZ1bmN0aW9uc1ttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy5jYWxsKHRoaXMuX3Jlc291cmNlLCB0aGlz
LmNhbGwoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAvKiogQHRoaXMgUmVzb3VyY2UuV3JhcEZ1bmN0aW9uICov
CisgICAgICAgICAgICAgICAgICAgIHdyYXBGdW5jdGlvbnNbbWV0aG9kTmFtZV0gPSBmdW5jdGlv
bigpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
X3Jlc291cmNlLnB1c2hDYWxsKHRoaXMuY2FsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRFJlc291cmNlLlRyYW5zZm9ybWF0aW9uTWF0cml4TWV0aG9kcy5mb3JFYWNo
KGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgZnVuYyA9IG1ldGhv
ZE5hbWUgPT09ICJzZXRUcmFuc2Zvcm0iID8gdGhpcy5wdXNoQ2FsbF9zZXRUcmFuc2Zvcm0gOiBu
dWxsOworICAgICAgICAgICAgICAgIHN0YXRlTW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKG1ldGhvZE5h
bWUsIGZ1bmMpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRSZXNvdXJjZS5QYXRoTWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZE5hbWUp
IHsKKyAgICAgICAgICAgICAgICB2YXIgZnVuYyA9IG1ldGhvZE5hbWUgPT09ICJiZWdpblBhdGgi
ID8gdGhpcy5wdXNoQ2FsbF9iZWdpblBhdGggOiBudWxsOworICAgICAgICAgICAgICAgIHN0YXRl
TW9kaWZ5aW5nV3JhcEZ1bmN0aW9uKG1ldGhvZE5hbWUsIGZ1bmMpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbigic2F2ZSIsIHRoaXMucHVz
aENhbGxfc2F2ZSk7CisgICAgICAgICAgICBzdGF0ZU1vZGlmeWluZ1dyYXBGdW5jdGlvbigicmVz
dG9yZSIsIHRoaXMucHVzaENhbGxfcmVzdG9yZSk7CisgICAgICAgICAgICBzdGF0ZU1vZGlmeWlu
Z1dyYXBGdW5jdGlvbigiY2xpcCIpOworCisgICAgICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRSZXNvdXJjZS5fd3JhcEZ1bmN0aW9ucyA9IHdyYXBGdW5jdGlvbnM7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHdyYXBGdW5jdGlvbnM7CisgICAgfQorfTsKKworQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEUmVzb3VyY2UucHJvdG90eXBlLl9fcHJvdG9fXyA9IFJlc291cmNlLnByb3Rv
dHlwZTsKKwogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqLwpAQCAtMTk0Miw3ICsyMTcwLDcgQEAg
UmVzb3VyY2VUcmFja2luZ01hbmFnZXIucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBw
YXJhbSB7Q2FsbH0gY2FsbAogICAgICAqLwotICAgIHJlcG9ydENhbGw6IGZ1bmN0aW9uKGNhbGwp
CisgICAgY2FwdHVyZUNhbGw6IGZ1bmN0aW9uKGNhbGwpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX2NhcHR1cmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5ODgsOCArMjIxNiw3IEBA
IEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJj
ZSA9IFJlc291cmNlLmZvck9iamVjdChnbENvbnRleHQpIHx8IG5ldyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRSZXNvdXJjZShnbENvbnRleHQsIHRoaXMuX2NvbnN0cnVjdFdlYkdMUmVwbGF5Q29udGV4
dC5iaW5kKHRoaXMsIGdsQ29udGV4dCkpOwogICAgICAgICB0aGlzLl9tYW5hZ2VyLnJlZ2lzdGVy
UmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICB2YXIgcHJveHkgPSByZXNvdXJjZS5wcm94eU9i
amVjdCgpOwotICAgICAgICByZXR1cm4gcHJveHk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5w
cm94eU9iamVjdCgpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE5OTgsOSArMjIyNSwxMCBAQCBJ
bmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgd3JhcENhbnZhczJEQ29u
dGV4dDogZnVuY3Rpb24oY29udGV4dCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgd3JhcHBpbmcgMkQgY29udGV4dC4KLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAgfSwg
ICAgCisgICAgICAgIHZhciByZXNvdXJjZSA9IFJlc291cmNlLmZvck9iamVjdChjb250ZXh0KSB8
fCBuZXcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEUmVzb3VyY2UoY29udGV4dCwgdGhpcy5fY29u
c3RydWN0Q2FudmFzMkRSZXBsYXlDb250ZXh0LmJpbmQodGhpcywgY29udGV4dCkpOworICAgICAg
ICB0aGlzLl9tYW5hZ2VyLnJlZ2lzdGVyUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICByZXR1
cm4gcmVzb3VyY2UucHJveHlPYmplY3QoKTsKKyAgICB9LAogCiAgICAgY2FwdHVyZUZyYW1lOiBm
dW5jdGlvbigpCiAgICAgewpAQCAtMjExNCw2ICsyMzQyLDI5IEBAIEluamVjdGVkU2NyaXB0LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXNldCB0aGUgcmVwbGF5IEdMIHN0
YXRlIGFuZCBjbGVhciB0aGUgY2FudmFzLgogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXBs
YXlDb250ZXh0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRH0gb3JpZ2luYWxDb250ZXh0CisgICAgICogQHJldHVybiB7Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEfQorICAgICAqLworICAgIF9jb25zdHJ1Y3RDYW52YXMyRFJlcGxheUNv
bnRleHQ6IGZ1bmN0aW9uKG9yaWdpbmFsQ29udGV4dCkKKyAgICB7CisgICAgICAgIHZhciByZXBs
YXlDb250ZXh0ID0gb3JpZ2luYWxDb250ZXh0WyJfX3JlcGxheUNvbnRleHQiXTsKKyAgICAgICAg
aWYgKCFyZXBsYXlDb250ZXh0KSB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gb3JpZ2luYWxD
b250ZXh0LmNhbnZhcy5jbG9uZU5vZGUodHJ1ZSk7CisgICAgICAgICAgICByZXBsYXlDb250ZXh0
ID0gLyoqIEB0eXBlIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9ICovIFJlc291cmNlLndyYXBw
ZWRPYmplY3QoY2FudmFzLmdldENvbnRleHQoIjJkIikpOworICAgICAgICAgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KG9yaWdpbmFsQ29udGV4dCwgIl9fcmVwbGF5Q29udGV4dCIsIHsKKyAgICAg
ICAgICAgICAgICB2YWx1ZTogcmVwbGF5Q29udGV4dCwKKyAgICAgICAgICAgICAgICB3cml0YWJs
ZTogZmFsc2UsCisgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAgICAg
ICAgICAgY29uZmlndXJhYmxlOiB0cnVlCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRo
aXMuX3JlcGxheUNvbnRleHQgPSByZXBsYXlDb250ZXh0OworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gRklYTUU6IENsZWFyIHRoZSBjYW52YXMuCisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHJlcGxheUNvbnRleHQ7CiAgICAgfQogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>