# HG changeset patch # User duke # Date 1499275319 -7200 # Node ID a746afa69a7ed9612e9bff2979e68f3eda2e50e4 # Parent 6ea9f58eb1a2b46bafb7c29b494e5672f4dbdf17# Parent 737ebb5de6b4475344b288112d5a895ef9cc42fc Merge diff -r 6ea9f58eb1a2 -r a746afa69a7e .hgtags-top-repo --- a/.hgtags-top-repo Thu Nov 07 08:16:23 2013 -0800 +++ b/.hgtags-top-repo Wed Jul 05 19:21:59 2017 +0200 @@ -236,3 +236,4 @@ 547316ea137d83d9c63083a9b83db64198fe0c81 jdk8-b112 6ba4c7cb623ec612031e05cf8bf279d8f407bd1e jdk8-b113 4f2011496393a26dcfd7b1f7787a3673ddd32599 jdk8-b114 +763ada2a1d8c5962bc8c3d297e57c562d2e95338 jdk8-b115 diff -r 6ea9f58eb1a2 -r a746afa69a7e corba/.hgtags --- a/corba/.hgtags Thu Nov 07 08:16:23 2013 -0800 +++ b/corba/.hgtags Wed Jul 05 19:21:59 2017 +0200 @@ -236,3 +236,4 @@ 43cec76d1d62587a07af07e2d9bec93aba2a506b jdk8-b112 a259ff3e42d91da68f4d4f09d7eb9dc22bc024fc jdk8-b113 0bbccf77c23e566170b88b52c2cf28e5d31ce927 jdk8-b114 +8d07115924b7d703a5048adb24e8aba751442f13 jdk8-b115 diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/.hgtags --- a/hotspot/.hgtags Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/.hgtags Wed Jul 05 19:21:59 2017 +0200 @@ -391,3 +391,5 @@ 82a9cdbf683e374a76f2009352de53e16bed5a91 hs25-b56 7fd913010dbbf75260688fd2fa8964763fa49a09 jdk8-b114 3b32d287da89a47a45d16f6d9ba5bd3cd9bf4b3e hs25-b57 +9ebaac78a8a0061fb9597e07f806498cb626cdeb jdk8-b115 +e510dfdec6dd701410f3398ed86ebcdff0cca63a hs25-b58 diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/make/hotspot_version --- a/hotspot/make/hotspot_version Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/make/hotspot_version Wed Jul 05 19:21:59 2017 +0200 @@ -35,7 +35,7 @@ HS_MAJOR_VER=25 HS_MINOR_VER=0 -HS_BUILD_NUMBER=57 +HS_BUILD_NUMBER=58 JDK_MAJOR_VER=1 JDK_MINOR_VER=8 diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp --- a/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/cpu/sparc/vm/macroAssembler_sparc.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -3526,8 +3526,12 @@ delayed()->sub(Rtsp, Roffset, Rtsp); // Bang down shadow pages too. - // The -1 because we already subtracted 1 page. - for (int i = 0; i< StackShadowPages-1; i++) { + // At this point, (tmp-0) is the last address touched, so don't + // touch it again. (It was touched as (tmp-pagesize) but then tmp + // was post-decremented.) Skip this address by starting at i=1, and + // touch a few more pages below. N.B. It is important to touch all + // the way down to and including i=StackShadowPages. + for (int i = 1; i <= StackShadowPages; i++) { set((-i*offset)+STACK_BIAS, Rscratch); st(G0, Rtsp, Rscratch); } diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/cpu/sparc/vm/sparc.ad --- a/hotspot/src/cpu/sparc/vm/sparc.ad Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/cpu/sparc/vm/sparc.ad Wed Jul 05 19:21:59 2017 +0200 @@ -2916,6 +2916,9 @@ __ bind(LSkip2); } + // We have no guarantee that on 64 bit the higher half of limit_reg is 0 + __ signx(limit_reg); + __ subcc(limit_reg, 1 * sizeof(jchar), chr1_reg); __ br(Assembler::equal, true, Assembler::pn, Ldone); __ delayed()->mov(O7, result_reg); // result is difference in lengths @@ -2973,6 +2976,9 @@ Register chr1_reg = result_reg; Register chr2_reg = tmp1_reg; + // We have no guarantee that on 64 bit the higher half of limit_reg is 0 + __ signx(limit_reg); + //check for alignment and position the pointers to the ends __ or3(str1_reg, str2_reg, chr1_reg); __ andcc(chr1_reg, 0x3, chr1_reg); diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp --- a/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_32.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -196,7 +196,7 @@ void InterpreterMacroAssembler::get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset) { assert(bcp_offset >= 0, "bcp is still pointing to start of bytecode"); - movl(reg, Address(rsi, bcp_offset)); + load_unsigned_short(reg, Address(rsi, bcp_offset)); bswapl(reg); shrl(reg, 16); } diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp --- a/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -192,7 +192,7 @@ Register reg, int bcp_offset) { assert(bcp_offset >= 0, "bcp is still pointing to start of bytecode"); - movl(reg, Address(r13, bcp_offset)); + load_unsigned_short(reg, Address(r13, bcp_offset)); bswapl(reg); shrl(reg, 16); } diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp --- a/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -1381,8 +1381,12 @@ jcc(Assembler::greater, loop); // Bang down shadow pages too. - // The -1 because we already subtracted 1 page. - for (int i = 0; i< StackShadowPages-1; i++) { + // At this point, (tmp-0) is the last address touched, so don't + // touch it again. (It was touched as (tmp-pagesize) but then tmp + // was post-decremented.) Skip this address by starting at i=1, and + // touch a few more pages below. N.B. It is important to touch all + // the way down to and including i=StackShadowPages. + for (int i = 1; i <= StackShadowPages; i++) { // this could be any sized move but this is can be a debugging crumb // so the bigger the better. movptr(Address(tmp, (-i*os::vm_page_size())), size ); diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp --- a/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -558,7 +558,7 @@ void TemplateTable::locals_index_wide(Register reg) { - __ movl(reg, at_bcp(2)); + __ load_unsigned_short(reg, at_bcp(2)); __ bswapl(reg); __ shrl(reg, 16); __ negptr(reg); @@ -1552,7 +1552,11 @@ InvocationCounter::counter_offset(); // Load up EDX with the branch displacement - __ movl(rdx, at_bcp(1)); + if (is_wide) { + __ movl(rdx, at_bcp(1)); + } else { + __ load_signed_short(rdx, at_bcp(1)); + } __ bswapl(rdx); if (!is_wide) __ sarl(rdx, 16); LP64_ONLY(__ movslq(rdx, rdx)); diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp --- a/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -568,7 +568,7 @@ } void TemplateTable::locals_index_wide(Register reg) { - __ movl(reg, at_bcp(2)); + __ load_unsigned_short(reg, at_bcp(2)); __ bswapl(reg); __ shrl(reg, 16); __ negptr(reg); @@ -1575,7 +1575,11 @@ InvocationCounter::counter_offset(); // Load up edx with the branch displacement - __ movl(rdx, at_bcp(1)); + if (is_wide) { + __ movl(rdx, at_bcp(1)); + } else { + __ load_signed_short(rdx, at_bcp(1)); + } __ bswapl(rdx); if (!is_wide) { diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/asm/assembler.cpp --- a/hotspot/src/share/vm/asm/assembler.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/asm/assembler.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -122,7 +122,7 @@ void AbstractAssembler::generate_stack_overflow_check( int frame_size_in_bytes) { if (UseStackBanging) { // Each code entry causes one stack bang n pages down the stack where n - // is configurable by StackBangPages. The setting depends on the maximum + // is configurable by StackShadowPages. The setting depends on the maximum // depth of VM call stack or native before going back into java code, // since only java code can raise a stack overflow exception using the // stack banging mechanism. The VM and native code does not detect stack diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/c1/c1_LinearScan.cpp --- a/hotspot/src/share/vm/c1/c1_LinearScan.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/c1/c1_LinearScan.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -1138,8 +1138,10 @@ } } } - - } else if (opr_type != T_LONG) { + // We want to sometimes use logical operations on pointers, in particular in GC barriers. + // Since 64bit logical operations do not current support operands on stack, we have to make sure + // T_OBJECT doesn't get spilled along with T_LONG. + } else if (opr_type != T_LONG LP64_ONLY(&& opr_type != T_OBJECT)) { // integer instruction (note: long operands must always be in register) switch (op->code()) { case lir_cmp: diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/classfile/defaultMethods.cpp --- a/hotspot/src/share/vm/classfile/defaultMethods.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/classfile/defaultMethods.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -392,10 +392,16 @@ } GrowableArray qualified_methods; + int num_defaults = 0; + int default_index = -1; for (int i = 0; i < _members.length(); ++i) { Pair entry = _members.at(i); if (entry.second == QUALIFIED) { qualified_methods.append(entry.first); + default_index++; + if (entry.first->is_default_method()) { + num_defaults++; + } } } @@ -408,6 +414,9 @@ if (!method->is_abstract()) { _selected_target = qualified_methods.at(0); } + // If only one qualified method is default, select that + } else if (num_defaults == 1) { + _selected_target = qualified_methods.at(default_index); } else { _exception_message = generate_conflicts_message(&qualified_methods,CHECK); _exception_name = vmSymbols::java_lang_IncompatibleClassChangeError(); diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/classfile/metadataOnStackMark.cpp --- a/hotspot/src/share/vm/classfile/metadataOnStackMark.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/classfile/metadataOnStackMark.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -27,6 +27,7 @@ #include "code/codeCache.hpp" #include "compiler/compileBroker.hpp" #include "oops/metadata.hpp" +#include "prims/jvmtiImpl.hpp" #include "runtime/synchronizer.hpp" #include "runtime/thread.hpp" #include "utilities/growableArray.hpp" @@ -48,6 +49,7 @@ Threads::metadata_do(Metadata::mark_on_stack); CodeCache::alive_nmethods_do(nmethod::mark_on_stack); CompileBroker::mark_on_stack(); + JvmtiCurrentBreakpoints::metadata_do(Metadata::mark_on_stack); } MetadataOnStackMark::~MetadataOnStackMark() { diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/memory/metaspace.cpp --- a/hotspot/src/share/vm/memory/metaspace.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/memory/metaspace.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -2869,7 +2869,7 @@ Universe::set_narrow_klass_base(lower_base); - if ((uint64_t)(higher_address - lower_base) < UnscaledClassSpaceMax) { + if ((uint64_t)(higher_address - lower_base) <= UnscaledClassSpaceMax) { Universe::set_narrow_klass_shift(0); } else { assert(!UseSharedSpaces, "Cannot shift with UseSharedSpaces"); @@ -2885,7 +2885,7 @@ address lower_base = MIN2((address)metaspace_base, cds_base); address higher_address = MAX2((address)(cds_base + FileMapInfo::shared_spaces_size()), (address)(metaspace_base + compressed_class_space_size())); - return ((uint64_t)(higher_address - lower_base) < UnscaledClassSpaceMax); + return ((uint64_t)(higher_address - lower_base) <= UnscaledClassSpaceMax); } // Try to allocate the metaspace at the requested addr. diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/opto/compile.cpp --- a/hotspot/src/share/vm/opto/compile.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/opto/compile.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -848,6 +848,7 @@ } #endif + NOT_PRODUCT( verify_barriers(); ) // Now that we know the size of all the monitors we can add a fixed slot // for the original deopt pc. @@ -3018,12 +3019,17 @@ // Phi nodes shouldn't be moved. They would only match below if they // had the same control as the MathExactNode. The only time that // would happen is if the Phi is also an input to the MathExact - if (!out->is_Phi()) { - if (out->in(0) == NULL) { - out->set_req(0, non_throwing); - } else if (out->in(0) == ctrl) { - out->set_req(0, non_throwing); - } + // + // Cmp nodes shouldn't have control set at all. + if (out->is_Phi() || + out->is_Cmp()) { + continue; + } + + if (out->in(0) == NULL) { + out->set_req(0, non_throwing); + } else if (out->in(0) == ctrl) { + out->set_req(0, non_throwing); } } } @@ -3368,6 +3374,72 @@ } } } + +// Verify GC barriers consistency +// Currently supported: +// - G1 pre-barriers (see GraphKit::g1_write_barrier_pre()) +void Compile::verify_barriers() { + if (UseG1GC) { + // Verify G1 pre-barriers + const int marking_offset = in_bytes(JavaThread::satb_mark_queue_offset() + PtrQueue::byte_offset_of_active()); + + ResourceArea *area = Thread::current()->resource_area(); + Unique_Node_List visited(area); + Node_List worklist(area); + // We're going to walk control flow backwards starting from the Root + worklist.push(_root); + while (worklist.size() > 0) { + Node* x = worklist.pop(); + if (x == NULL || x == top()) continue; + if (visited.member(x)) { + continue; + } else { + visited.push(x); + } + + if (x->is_Region()) { + for (uint i = 1; i < x->req(); i++) { + worklist.push(x->in(i)); + } + } else { + worklist.push(x->in(0)); + // We are looking for the pattern: + // /->ThreadLocal + // If->Bool->CmpI->LoadB->AddP->ConL(marking_offset) + // \->ConI(0) + // We want to verify that the If and the LoadB have the same control + // See GraphKit::g1_write_barrier_pre() + if (x->is_If()) { + IfNode *iff = x->as_If(); + if (iff->in(1)->is_Bool() && iff->in(1)->in(1)->is_Cmp()) { + CmpNode *cmp = iff->in(1)->in(1)->as_Cmp(); + if (cmp->Opcode() == Op_CmpI && cmp->in(2)->is_Con() && cmp->in(2)->bottom_type()->is_int()->get_con() == 0 + && cmp->in(1)->is_Load()) { + LoadNode* load = cmp->in(1)->as_Load(); + if (load->Opcode() == Op_LoadB && load->in(2)->is_AddP() && load->in(2)->in(2)->Opcode() == Op_ThreadLocal + && load->in(2)->in(3)->is_Con() + && load->in(2)->in(3)->bottom_type()->is_intptr_t()->get_con() == marking_offset) { + + Node* if_ctrl = iff->in(0); + Node* load_ctrl = load->in(0); + + if (if_ctrl != load_ctrl) { + // Skip possible CProj->NeverBranch in infinite loops + if ((if_ctrl->is_Proj() && if_ctrl->Opcode() == Op_CProj) + && (if_ctrl->in(0)->is_MultiBranch() && if_ctrl->in(0)->Opcode() == Op_NeverBranch)) { + if_ctrl = if_ctrl->in(0)->in(0); + } + } + assert(load_ctrl != NULL && if_ctrl == load_ctrl, "controls must match"); + } + } + } + } + } + } + } +} + #endif // The Compile object keeps track of failure reasons separately from the ciEnv. diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/opto/compile.hpp --- a/hotspot/src/share/vm/opto/compile.hpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/opto/compile.hpp Wed Jul 05 19:21:59 2017 +0200 @@ -1148,6 +1148,9 @@ // graph is strongly connected from root in both directions. void verify_graph_edges(bool no_dead_code = false) PRODUCT_RETURN; + // Verify GC barrier patterns + void verify_barriers() PRODUCT_RETURN; + // End-of-run dumps. static void print_statistics() PRODUCT_RETURN; diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/opto/loopTransform.cpp --- a/hotspot/src/share/vm/opto/loopTransform.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/opto/loopTransform.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -1964,7 +1964,7 @@ // Find loads off the surviving projection; remove their control edge for (DUIterator_Fast imax, i = dp->fast_outs(imax); i < imax; i++) { Node* cd = dp->fast_out(i); // Control-dependent node - if( cd->is_Load() ) { // Loads can now float around in the loop + if (cd->is_Load() && cd->depends_only_on_test()) { // Loads can now float around in the loop // Allow the load to float around in the loop, or before it // but NOT before the pre-loop. _igvn.replace_input_of(cd, 0, ctrl); // ctrl, not NULL diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/opto/memnode.hpp --- a/hotspot/src/share/vm/opto/memnode.hpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/opto/memnode.hpp Wed Jul 05 19:21:59 2017 +0200 @@ -204,6 +204,17 @@ protected: const Type* load_array_final_field(const TypeKlassPtr *tkls, ciKlass* klass) const; + // depends_only_on_test is almost always true, and needs to be almost always + // true to enable key hoisting & commoning optimizations. However, for the + // special case of RawPtr loads from TLS top & end, and other loads performed by + // GC barriers, the control edge carries the dependence preventing hoisting past + // a Safepoint instead of the memory edge. (An unfortunate consequence of having + // Safepoints not set Raw Memory; itself an unfortunate consequence of having Nodes + // which produce results (new raw memory state) inside of loops preventing all + // manner of other optimizations). Basically, it's ugly but so is the alternative. + // See comment in macro.cpp, around line 125 expand_allocate_common(). + virtual bool depends_only_on_test() const { return adr_type() != TypeRawPtr::BOTTOM; } + }; //------------------------------LoadBNode-------------------------------------- @@ -370,16 +381,6 @@ virtual uint ideal_reg() const { return Op_RegP; } virtual int store_Opcode() const { return Op_StoreP; } virtual BasicType memory_type() const { return T_ADDRESS; } - // depends_only_on_test is almost always true, and needs to be almost always - // true to enable key hoisting & commoning optimizations. However, for the - // special case of RawPtr loads from TLS top & end, the control edge carries - // the dependence preventing hoisting past a Safepoint instead of the memory - // edge. (An unfortunate consequence of having Safepoints not set Raw - // Memory; itself an unfortunate consequence of having Nodes which produce - // results (new raw memory state) inside of loops preventing all manner of - // other optimizations). Basically, it's ugly but so is the alternative. - // See comment in macro.cpp, around line 125 expand_allocate_common(). - virtual bool depends_only_on_test() const { return adr_type() != TypeRawPtr::BOTTOM; } }; @@ -393,16 +394,6 @@ virtual uint ideal_reg() const { return Op_RegN; } virtual int store_Opcode() const { return Op_StoreN; } virtual BasicType memory_type() const { return T_NARROWOOP; } - // depends_only_on_test is almost always true, and needs to be almost always - // true to enable key hoisting & commoning optimizations. However, for the - // special case of RawPtr loads from TLS top & end, the control edge carries - // the dependence preventing hoisting past a Safepoint instead of the memory - // edge. (An unfortunate consequence of having Safepoints not set Raw - // Memory; itself an unfortunate consequence of having Nodes which produce - // results (new raw memory state) inside of loops preventing all manner of - // other optimizations). Basically, it's ugly but so is the alternative. - // See comment in macro.cpp, around line 125 expand_allocate_common(). - virtual bool depends_only_on_test() const { return adr_type() != TypeRawPtr::BOTTOM; } }; //------------------------------LoadKlassNode---------------------------------- diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/prims/jvmtiImpl.cpp --- a/hotspot/src/share/vm/prims/jvmtiImpl.cpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/prims/jvmtiImpl.cpp Wed Jul 05 19:21:59 2017 +0200 @@ -210,6 +210,14 @@ } } +void GrowableCache::metadata_do(void f(Metadata*)) { + int len = _elements->length(); + for (int i=0; iat(i); + e->metadata_do(f); + } +} + void GrowableCache::gc_epilogue() { int len = _elements->length(); for (int i=0; imethod_holder()->class_loader_data()->class_loader(); + _class_holder = _method->method_holder()->klass_holder(); #ifdef CHECK_UNHANDLED_OOPS - // _class_loader can't be wrapped in a Handle, because JvmtiBreakpoint:s are - // eventually allocated on the heap. + // _class_holder can't be wrapped in a Handle, because JvmtiBreakpoints are + // sometimes allocated on the heap. // - // The code handling JvmtiBreakpoint:s allocated on the stack can't be - // interrupted by a GC until _class_loader is reachable by the GC via the + // The code handling JvmtiBreakpoints allocated on the stack can't be + // interrupted by a GC until _class_holder is reachable by the GC via the // oops_do method. - Thread::current()->allow_unhandled_oop(&_class_loader); + Thread::current()->allow_unhandled_oop(&_class_holder); #endif // CHECK_UNHANDLED_OOPS assert(_method != NULL, "_method != NULL"); _bci = (int) location; @@ -247,7 +255,7 @@ void JvmtiBreakpoint::copy(JvmtiBreakpoint& bp) { _method = bp._method; _bci = bp._bci; - _class_loader = bp._class_loader; + _class_holder = bp._class_holder; } bool JvmtiBreakpoint::lessThan(JvmtiBreakpoint& bp) { @@ -365,6 +373,13 @@ } } +void VM_ChangeBreakpoints::metadata_do(void f(Metadata*)) { + // Walk metadata in breakpoints to keep from being deallocated with RedefineClasses + if (_bp != NULL) { + _bp->metadata_do(f); + } +} + // // class JvmtiBreakpoints // @@ -381,6 +396,10 @@ _bps.oops_do(f); } +void JvmtiBreakpoints::metadata_do(void f(Metadata*)) { + _bps.metadata_do(f); +} + void JvmtiBreakpoints::gc_epilogue() { _bps.gc_epilogue(); } @@ -499,6 +518,12 @@ } } +void JvmtiCurrentBreakpoints::metadata_do(void f(Metadata*)) { + if (_jvmti_breakpoints != NULL) { + _jvmti_breakpoints->metadata_do(f); + } +} + void JvmtiCurrentBreakpoints::gc_epilogue() { if (_jvmti_breakpoints != NULL) { _jvmti_breakpoints->gc_epilogue(); diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/src/share/vm/prims/jvmtiImpl.hpp --- a/hotspot/src/share/vm/prims/jvmtiImpl.hpp Thu Nov 07 08:16:23 2013 -0800 +++ b/hotspot/src/share/vm/prims/jvmtiImpl.hpp Wed Jul 05 19:21:59 2017 +0200 @@ -69,6 +69,7 @@ virtual bool lessThan(GrowableElement *e)=0; virtual GrowableElement *clone() =0; virtual void oops_do(OopClosure* f) =0; + virtual void metadata_do(void f(Metadata*)) =0; }; class GrowableCache VALUE_OBJ_CLASS_SPEC { @@ -115,6 +116,8 @@ void clear(); // apply f to every element and update the cache void oops_do(OopClosure* f); + // walk metadata to preserve for RedefineClasses + void metadata_do(void f(Metadata*)); // update the cache after a full gc void gc_epilogue(); }; @@ -148,6 +151,7 @@ void remove (int index) { _cache.remove(index); } void clear() { _cache.clear(); } void oops_do(OopClosure* f) { _cache.oops_do(f); } + void metadata_do(void f(Metadata*)) { _cache.metadata_do(f); } void gc_epilogue() { _cache.gc_epilogue(); } }; @@ -169,7 +173,7 @@ Method* _method; int _bci; Bytecodes::Code _orig_bytecode; - oop _class_loader; + oop _class_holder; // keeps _method memory from being deallocated public: JvmtiBreakpoint(); @@ -191,9 +195,15 @@ bool lessThan(GrowableElement* e) { Unimplemented(); return false; } bool equals(GrowableElement* e) { return equals((JvmtiBreakpoint&) *e); } void oops_do(OopClosure* f) { - // Mark the method loader as live - f->do_oop(&_class_loader); + // Mark the method loader as live so the Method* class loader doesn't get + // unloaded and Method* memory reclaimed. + f->do_oop(&_class_holder); } + void metadata_do(void f(Metadata*)) { + // walk metadata to preserve for RedefineClasses + f(_method); + } + GrowableElement *clone() { JvmtiBreakpoint *bp = new JvmtiBreakpoint(); bp->copy(*this); @@ -239,6 +249,7 @@ int length(); void oops_do(OopClosure* f); + void metadata_do(void f(Metadata*)); void print(); int set(JvmtiBreakpoint& bp); @@ -288,6 +299,7 @@ static inline bool is_breakpoint(address bcp); static void oops_do(OopClosure* f); + static void metadata_do(void f(Metadata*)); static void gc_epilogue(); }; @@ -332,6 +344,7 @@ VMOp_Type type() const { return VMOp_ChangeBreakpoints; } void doit(); void oops_do(OopClosure* f); + void metadata_do(void f(Metadata*)); }; diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/test/compiler/intrinsics/mathexact/CompareTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/compiler/intrinsics/mathexact/CompareTest.java Wed Jul 05 19:21:59 2017 +0200 @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8026722 + * @summary Verify that the compare after addExact is a signed compare + * @compile CompareTest.java + * @run main CompareTest + * + */ + +public class CompareTest { + public static long store = 0; + public static long addValue = 1231; + + public static void main(String[] args) { + for (int i = 0; i < 20000; ++i) { + runTest(i, i); + runTest(i-1, i); + } + } + + public static long create(long value, int v) { + if ((value | v) == 0) { + return 0; + } + + // C2 turned this test into unsigned test when a control edge was set on the Cmp + if (value < -31557014167219200L || value > 31556889864403199L) { + throw new RuntimeException("error"); + } + + return value; + } + + public static void runTest(long value, int value2) { + long res = Math.addExact(value, addValue); + store = create(res, Math.floorMod(value2, 100000)); + } +} diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/test/compiler/intrinsics/stringequals/TestStringEqualsBadLength.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/compiler/intrinsics/stringequals/TestStringEqualsBadLength.java Wed Jul 05 19:21:59 2017 +0200 @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8027445 + * @summary String.equals() may be called with a length whose upper bits are not cleared + * @run main/othervm -XX:-UseOnStackReplacement -XX:-BackgroundCompilation TestStringEqualsBadLength + * + */ + +import java.util.Arrays; + +public class TestStringEqualsBadLength { + + int v1; + int v2; + + boolean m(String s1) { + int l = v2 - v1; // 0 - (-1) = 1. On 64 bit: 0xffffffff00000001 + char[] arr = new char[l]; + arr[0] = 'a'; + String s2 = new String(arr); + // The string length is not reloaded but the value computed is + // reused so pointer computation must not use + // 0xffffffff00000001 + return s2.equals(s1); + } + + // Same thing with String.compareTo() + int m2(String s1) { + int l = v2 - v1; + char[] arr = new char[l+1]; + arr[0] = 'a'; + arr[1] = 'b'; + String s2 = new String(arr); + return s2.compareTo(s1); + } + + // Same thing with equals() for arrays + boolean m3(char[] arr1) { + int l = v2 - v1; // 0 - (-1) = 1. On 64 bit: 0xffffffff00000001 + char[] arr2 = new char[l]; + arr2[0] = 'a'; + return Arrays.equals(arr2, arr1); + } + + static public void main(String[] args) { + TestStringEqualsBadLength tse = new TestStringEqualsBadLength(); + tse.v1 = -1; + tse.v2 = 0; + char[] arr = new char[1]; + arr[0] = 'a'; + for (int i = 0; i < 20000; i++) { + tse.m("a"); + tse.m2("ab"); + tse.m3(arr); + } + + System.out.println("TEST PASSED"); + } +} diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/test/compiler/regalloc/C1ObjectSpillInLogicOp.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/compiler/regalloc/C1ObjectSpillInLogicOp.java Wed Jul 05 19:21:59 2017 +0200 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8027751 + * @summary C1 crashes generating G1 post-barrier in Unsafe.getAndSetObject() intrinsic because of the new value spill + * @run main/othervm -XX:+UseG1GC C1ObjectSpillInLogicOp + * + * G1 barriers use logical operators (xor) on T_OBJECT mixed with T_LONG or T_INT. + * The current implementation of logical operations on x86 in C1 doesn't allow for long operands to be on stack. + * There is a special code in the register allocator that forces long arguments in registers on x86. However T_OBJECT + * can be spilled just fine, and in that case the xor emission will fail. + */ + +import java.util.concurrent.atomic.*; +class C1ObjectSpillInLogicOp { + static public void main(String[] args) { + AtomicReferenceArray x = new AtomicReferenceArray(128); + Integer y = new Integer(0); + for (int i = 0; i < 50000; i++) { + x.getAndSet(i % x.length(), y); + } + } +} diff -r 6ea9f58eb1a2 -r a746afa69a7e hotspot/test/compiler/uncommontrap/UncommonTrapStackBang.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/compiler/uncommontrap/UncommonTrapStackBang.java Wed Jul 05 19:21:59 2017 +0200 @@ -0,0 +1,10908 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +/** + * @test + * @bug 8026775 + * @summary Uncommon trap blob did not bang all the stack shadow pages + * + * @run main/othervm -server -XX:+IgnoreUnrecognizedVMOptions -XX:+TieredCompilation UncommonTrapStackBang + * @run main/othervm -server -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation UncommonTrapStackBang + * + * + * Note: This test does not reproduce the problem with absolute + * certainty. Empirically the bug reproduces on Windows some 80+% of + * the time. Setting everything up to fail in 100% of the cases turns + * out to be tricky at best. + * + * + * The goal of this test is to set up the following stack: + * + * doIt() + * eatStack() + * ... + * eatStack() + * run() + * + * + * When doIt() gets executed it will hit an uncommon trap and expand + * into a huge interpreter frame. The doIt method then calls the + * compiled version of StringBuilder.() which does a single + * stack bang StackShadowPages down. + * + * The uncommon trap blob is supposed to prepare for the interpreter + * by pre-touching stack pages. The bug was that it didn't correctly + * pre-touch all the stack shadow pages, leaving a "hole" on the stack + * which raises an exception on Windows when the stack bang in + * StringBuilder is performed. + */ +public class UncommonTrapStackBang extends Thread { + class Foo { } + + public static void main(String[] args) throws Exception { + doWarmup(); + + // Fork off a new thread to increase odds of the stack being unmapped + UncommonTrapStackBang htsb = new UncommonTrapStackBang(); + htsb.run(); + htsb.join(); + } + + // Make sure: + // + // a) StringBuilder.()V is compiled + // b) doIt() is compiled with an uncommon trap in the unlikely path + public static void doWarmup() { + for (int i = 0; i < 100_000; i++) { + new StringBuilder(); + + doIt(false); + } + } + + public void run() { + eatStack(200); + } + + // Consume some stack to get down to some unused/unmapped pages, + // then call doIt and provoke the uncommon trap/deoptimization + private void eatStack(int n) { + if (n <= 0) { + doIt(true); + return; + } + + eatStack(n - 1); + } + + static public void doIt(boolean unlikely) { + int i0; + int i1; + int i2; + int i3; + int i4; + int i5; + int i6; + int i7; + int i8; + int i9; + int i10; + int i11; + int i12; + int i13; + int i14; + int i15; + int i16; + int i17; + int i18; + int i19; + int i20; + int i21; + int i22; + int i23; + int i24; + int i25; + int i26; + int i27; + int i28; + int i29; + int i30; + int i31; + int i32; + int i33; + int i34; + int i35; + int i36; + int i37; + int i38; + int i39; + int i40; + int i41; + int i42; + int i43; + int i44; + int i45; + int i46; + int i47; + int i48; + int i49; + int i50; + int i51; + int i52; + int i53; + int i54; + int i55; + int i56; + int i57; + int i58; + int i59; + int i60; + int i61; + int i62; + int i63; + int i64; + int i65; + int i66; + int i67; + int i68; + int i69; + int i70; + int i71; + int i72; + int i73; + int i74; + int i75; + int i76; + int i77; + int i78; + int i79; + int i80; + int i81; + int i82; + int i83; + int i84; + int i85; + int i86; + int i87; + int i88; + int i89; + int i90; + int i91; + int i92; + int i93; + int i94; + int i95; + int i96; + int i97; + int i98; + int i99; + int i100; + int i101; + int i102; + int i103; + int i104; + int i105; + int i106; + int i107; + int i108; + int i109; + int i110; + int i111; + int i112; + int i113; + int i114; + int i115; + int i116; + int i117; + int i118; + int i119; + int i120; + int i121; + int i122; + int i123; + int i124; + int i125; + int i126; + int i127; + int i128; + int i129; + int i130; + int i131; + int i132; + int i133; + int i134; + int i135; + int i136; + int i137; + int i138; + int i139; + int i140; + int i141; + int i142; + int i143; + int i144; + int i145; + int i146; + int i147; + int i148; + int i149; + int i150; + int i151; + int i152; + int i153; + int i154; + int i155; + int i156; + int i157; + int i158; + int i159; + int i160; + int i161; + int i162; + int i163; + int i164; + int i165; + int i166; + int i167; + int i168; + int i169; + int i170; + int i171; + int i172; + int i173; + int i174; + int i175; + int i176; + int i177; + int i178; + int i179; + int i180; + int i181; + int i182; + int i183; + int i184; + int i185; + int i186; + int i187; + int i188; + int i189; + int i190; + int i191; + int i192; + int i193; + int i194; + int i195; + int i196; + int i197; + int i198; + int i199; + int i200; + int i201; + int i202; + int i203; + int i204; + int i205; + int i206; + int i207; + int i208; + int i209; + int i210; + int i211; + int i212; + int i213; + int i214; + int i215; + int i216; + int i217; + int i218; + int i219; + int i220; + int i221; + int i222; + int i223; + int i224; + int i225; + int i226; + int i227; + int i228; + int i229; + int i230; + int i231; + int i232; + int i233; + int i234; + int i235; + int i236; + int i237; + int i238; + int i239; + int i240; + int i241; + int i242; + int i243; + int i244; + int i245; + int i246; + int i247; + int i248; + int i249; + int i250; + int i251; + int i252; + int i253; + int i254; + int i255; + int i256; + int i257; + int i258; + int i259; + int i260; + int i261; + int i262; + int i263; + int i264; + int i265; + int i266; + int i267; + int i268; + int i269; + int i270; + int i271; + int i272; + int i273; + int i274; + int i275; + int i276; + int i277; + int i278; + int i279; + int i280; + int i281; + int i282; + int i283; + int i284; + int i285; + int i286; + int i287; + int i288; + int i289; + int i290; + int i291; + int i292; + int i293; + int i294; + int i295; + int i296; + int i297; + int i298; + int i299; + int i300; + int i301; + int i302; + int i303; + int i304; + int i305; + int i306; + int i307; + int i308; + int i309; + int i310; + int i311; + int i312; + int i313; + int i314; + int i315; + int i316; + int i317; + int i318; + int i319; + int i320; + int i321; + int i322; + int i323; + int i324; + int i325; + int i326; + int i327; + int i328; + int i329; + int i330; + int i331; + int i332; + int i333; + int i334; + int i335; + int i336; + int i337; + int i338; + int i339; + int i340; + int i341; + int i342; + int i343; + int i344; + int i345; + int i346; + int i347; + int i348; + int i349; + int i350; + int i351; + int i352; + int i353; + int i354; + int i355; + int i356; + int i357; + int i358; + int i359; + int i360; + int i361; + int i362; + int i363; + int i364; + int i365; + int i366; + int i367; + int i368; + int i369; + int i370; + int i371; + int i372; + int i373; + int i374; + int i375; + int i376; + int i377; + int i378; + int i379; + int i380; + int i381; + int i382; + int i383; + int i384; + int i385; + int i386; + int i387; + int i388; + int i389; + int i390; + int i391; + int i392; + int i393; + int i394; + int i395; + int i396; + int i397; + int i398; + int i399; + int i400; + int i401; + int i402; + int i403; + int i404; + int i405; + int i406; + int i407; + int i408; + int i409; + int i410; + int i411; + int i412; + int i413; + int i414; + int i415; + int i416; + int i417; + int i418; + int i419; + int i420; + int i421; + int i422; + int i423; + int i424; + int i425; + int i426; + int i427; + int i428; + int i429; + int i430; + int i431; + int i432; + int i433; + int i434; + int i435; + int i436; + int i437; + int i438; + int i439; + int i440; + int i441; + int i442; + int i443; + int i444; + int i445; + int i446; + int i447; + int i448; + int i449; + int i450; + int i451; + int i452; + int i453; + int i454; + int i455; + int i456; + int i457; + int i458; + int i459; + int i460; + int i461; + int i462; + int i463; + int i464; + int i465; + int i466; + int i467; + int i468; + int i469; + int i470; + int i471; + int i472; + int i473; + int i474; + int i475; + int i476; + int i477; + int i478; + int i479; + int i480; + int i481; + int i482; + int i483; + int i484; + int i485; + int i486; + int i487; + int i488; + int i489; + int i490; + int i491; + int i492; + int i493; + int i494; + int i495; + int i496; + int i497; + int i498; + int i499; + int i500; + int i501; + int i502; + int i503; + int i504; + int i505; + int i506; + int i507; + int i508; + int i509; + int i510; + int i511; + int i512; + int i513; + int i514; + int i515; + int i516; + int i517; + int i518; + int i519; + int i520; + int i521; + int i522; + int i523; + int i524; + int i525; + int i526; + int i527; + int i528; + int i529; + int i530; + int i531; + int i532; + int i533; + int i534; + int i535; + int i536; + int i537; + int i538; + int i539; + int i540; + int i541; + int i542; + int i543; + int i544; + int i545; + int i546; + int i547; + int i548; + int i549; + int i550; + int i551; + int i552; + int i553; + int i554; + int i555; + int i556; + int i557; + int i558; + int i559; + int i560; + int i561; + int i562; + int i563; + int i564; + int i565; + int i566; + int i567; + int i568; + int i569; + int i570; + int i571; + int i572; + int i573; + int i574; + int i575; + int i576; + int i577; + int i578; + int i579; + int i580; + int i581; + int i582; + int i583; + int i584; + int i585; + int i586; + int i587; + int i588; + int i589; + int i590; + int i591; + int i592; + int i593; + int i594; + int i595; + int i596; + int i597; + int i598; + int i599; + int i600; + int i601; + int i602; + int i603; + int i604; + int i605; + int i606; + int i607; + int i608; + int i609; + int i610; + int i611; + int i612; + int i613; + int i614; + int i615; + int i616; + int i617; + int i618; + int i619; + int i620; + int i621; + int i622; + int i623; + int i624; + int i625; + int i626; + int i627; + int i628; + int i629; + int i630; + int i631; + int i632; + int i633; + int i634; + int i635; + int i636; + int i637; + int i638; + int i639; + int i640; + int i641; + int i642; + int i643; + int i644; + int i645; + int i646; + int i647; + int i648; + int i649; + int i650; + int i651; + int i652; + int i653; + int i654; + int i655; + int i656; + int i657; + int i658; + int i659; + int i660; + int i661; + int i662; + int i663; + int i664; + int i665; + int i666; + int i667; + int i668; + int i669; + int i670; + int i671; + int i672; + int i673; + int i674; + int i675; + int i676; + int i677; + int i678; + int i679; + int i680; + int i681; + int i682; + int i683; + int i684; + int i685; + int i686; + int i687; + int i688; + int i689; + int i690; + int i691; + int i692; + int i693; + int i694; + int i695; + int i696; + int i697; + int i698; + int i699; + int i700; + int i701; + int i702; + int i703; + int i704; + int i705; + int i706; + int i707; + int i708; + int i709; + int i710; + int i711; + int i712; + int i713; + int i714; + int i715; + int i716; + int i717; + int i718; + int i719; + int i720; + int i721; + int i722; + int i723; + int i724; + int i725; + int i726; + int i727; + int i728; + int i729; + int i730; + int i731; + int i732; + int i733; + int i734; + int i735; + int i736; + int i737; + int i738; + int i739; + int i740; + int i741; + int i742; + int i743; + int i744; + int i745; + int i746; + int i747; + int i748; + int i749; + int i750; + int i751; + int i752; + int i753; + int i754; + int i755; + int i756; + int i757; + int i758; + int i759; + int i760; + int i761; + int i762; + int i763; + int i764; + int i765; + int i766; + int i767; + int i768; + int i769; + int i770; + int i771; + int i772; + int i773; + int i774; + int i775; + int i776; + int i777; + int i778; + int i779; + int i780; + int i781; + int i782; + int i783; + int i784; + int i785; + int i786; + int i787; + int i788; + int i789; + int i790; + int i791; + int i792; + int i793; + int i794; + int i795; + int i796; + int i797; + int i798; + int i799; + int i800; + int i801; + int i802; + int i803; + int i804; + int i805; + int i806; + int i807; + int i808; + int i809; + int i810; + int i811; + int i812; + int i813; + int i814; + int i815; + int i816; + int i817; + int i818; + int i819; + int i820; + int i821; + int i822; + int i823; + int i824; + int i825; + int i826; + int i827; + int i828; + int i829; + int i830; + int i831; + int i832; + int i833; + int i834; + int i835; + int i836; + int i837; + int i838; + int i839; + int i840; + int i841; + int i842; + int i843; + int i844; + int i845; + int i846; + int i847; + int i848; + int i849; + int i850; + int i851; + int i852; + int i853; + int i854; + int i855; + int i856; + int i857; + int i858; + int i859; + int i860; + int i861; + int i862; + int i863; + int i864; + int i865; + int i866; + int i867; + int i868; + int i869; + int i870; + int i871; + int i872; + int i873; + int i874; + int i875; + int i876; + int i877; + int i878; + int i879; + int i880; + int i881; + int i882; + int i883; + int i884; + int i885; + int i886; + int i887; + int i888; + int i889; + int i890; + int i891; + int i892; + int i893; + int i894; + int i895; + int i896; + int i897; + int i898; + int i899; + int i900; + int i901; + int i902; + int i903; + int i904; + int i905; + int i906; + int i907; + int i908; + int i909; + int i910; + int i911; + int i912; + int i913; + int i914; + int i915; + int i916; + int i917; + int i918; + int i919; + int i920; + int i921; + int i922; + int i923; + int i924; + int i925; + int i926; + int i927; + int i928; + int i929; + int i930; + int i931; + int i932; + int i933; + int i934; + int i935; + int i936; + int i937; + int i938; + int i939; + int i940; + int i941; + int i942; + int i943; + int i944; + int i945; + int i946; + int i947; + int i948; + int i949; + int i950; + int i951; + int i952; + int i953; + int i954; + int i955; + int i956; + int i957; + int i958; + int i959; + int i960; + int i961; + int i962; + int i963; + int i964; + int i965; + int i966; + int i967; + int i968; + int i969; + int i970; + int i971; + int i972; + int i973; + int i974; + int i975; + int i976; + int i977; + int i978; + int i979; + int i980; + int i981; + int i982; + int i983; + int i984; + int i985; + int i986; + int i987; + int i988; + int i989; + int i990; + int i991; + int i992; + int i993; + int i994; + int i995; + int i996; + int i997; + int i998; + int i999; + int i1000; + int i1001; + int i1002; + int i1003; + int i1004; + int i1005; + int i1006; + int i1007; + int i1008; + int i1009; + int i1010; + int i1011; + int i1012; + int i1013; + int i1014; + int i1015; + int i1016; + int i1017; + int i1018; + int i1019; + int i1020; + int i1021; + int i1022; + int i1023; + int i1024; + int i1025; + int i1026; + int i1027; + int i1028; + int i1029; + int i1030; + int i1031; + int i1032; + int i1033; + int i1034; + int i1035; + int i1036; + int i1037; + int i1038; + int i1039; + int i1040; + int i1041; + int i1042; + int i1043; + int i1044; + int i1045; + int i1046; + int i1047; + int i1048; + int i1049; + int i1050; + int i1051; + int i1052; + int i1053; + int i1054; + int i1055; + int i1056; + int i1057; + int i1058; + int i1059; + int i1060; + int i1061; + int i1062; + int i1063; + int i1064; + int i1065; + int i1066; + int i1067; + int i1068; + int i1069; + int i1070; + int i1071; + int i1072; + int i1073; + int i1074; + int i1075; + int i1076; + int i1077; + int i1078; + int i1079; + int i1080; + int i1081; + int i1082; + int i1083; + int i1084; + int i1085; + int i1086; + int i1087; + int i1088; + int i1089; + int i1090; + int i1091; + int i1092; + int i1093; + int i1094; + int i1095; + int i1096; + int i1097; + int i1098; + int i1099; + int i1100; + int i1101; + int i1102; + int i1103; + int i1104; + int i1105; + int i1106; + int i1107; + int i1108; + int i1109; + int i1110; + int i1111; + int i1112; + int i1113; + int i1114; + int i1115; + int i1116; + int i1117; + int i1118; + int i1119; + int i1120; + int i1121; + int i1122; + int i1123; + int i1124; + int i1125; + int i1126; + int i1127; + int i1128; + int i1129; + int i1130; + int i1131; + int i1132; + int i1133; + int i1134; + int i1135; + int i1136; + int i1137; + int i1138; + int i1139; + int i1140; + int i1141; + int i1142; + int i1143; + int i1144; + int i1145; + int i1146; + int i1147; + int i1148; + int i1149; + int i1150; + int i1151; + int i1152; + int i1153; + int i1154; + int i1155; + int i1156; + int i1157; + int i1158; + int i1159; + int i1160; + int i1161; + int i1162; + int i1163; + int i1164; + int i1165; + int i1166; + int i1167; + int i1168; + int i1169; + int i1170; + int i1171; + int i1172; + int i1173; + int i1174; + int i1175; + int i1176; + int i1177; + int i1178; + int i1179; + int i1180; + int i1181; + int i1182; + int i1183; + int i1184; + int i1185; + int i1186; + int i1187; + int i1188; + int i1189; + int i1190; + int i1191; + int i1192; + int i1193; + int i1194; + int i1195; + int i1196; + int i1197; + int i1198; + int i1199; + int i1200; + int i1201; + int i1202; + int i1203; + int i1204; + int i1205; + int i1206; + int i1207; + int i1208; + int i1209; + int i1210; + int i1211; + int i1212; + int i1213; + int i1214; + int i1215; + int i1216; + int i1217; + int i1218; + int i1219; + int i1220; + int i1221; + int i1222; + int i1223; + int i1224; + int i1225; + int i1226; + int i1227; + int i1228; + int i1229; + int i1230; + int i1231; + int i1232; + int i1233; + int i1234; + int i1235; + int i1236; + int i1237; + int i1238; + int i1239; + int i1240; + int i1241; + int i1242; + int i1243; + int i1244; + int i1245; + int i1246; + int i1247; + int i1248; + int i1249; + int i1250; + int i1251; + int i1252; + int i1253; + int i1254; + int i1255; + int i1256; + int i1257; + int i1258; + int i1259; + int i1260; + int i1261; + int i1262; + int i1263; + int i1264; + int i1265; + int i1266; + int i1267; + int i1268; + int i1269; + int i1270; + int i1271; + int i1272; + int i1273; + int i1274; + int i1275; + int i1276; + int i1277; + int i1278; + int i1279; + int i1280; + int i1281; + int i1282; + int i1283; + int i1284; + int i1285; + int i1286; + int i1287; + int i1288; + int i1289; + int i1290; + int i1291; + int i1292; + int i1293; + int i1294; + int i1295; + int i1296; + int i1297; + int i1298; + int i1299; + int i1300; + int i1301; + int i1302; + int i1303; + int i1304; + int i1305; + int i1306; + int i1307; + int i1308; + int i1309; + int i1310; + int i1311; + int i1312; + int i1313; + int i1314; + int i1315; + int i1316; + int i1317; + int i1318; + int i1319; + int i1320; + int i1321; + int i1322; + int i1323; + int i1324; + int i1325; + int i1326; + int i1327; + int i1328; + int i1329; + int i1330; + int i1331; + int i1332; + int i1333; + int i1334; + int i1335; + int i1336; + int i1337; + int i1338; + int i1339; + int i1340; + int i1341; + int i1342; + int i1343; + int i1344; + int i1345; + int i1346; + int i1347; + int i1348; + int i1349; + int i1350; + int i1351; + int i1352; + int i1353; + int i1354; + int i1355; + int i1356; + int i1357; + int i1358; + int i1359; + int i1360; + int i1361; + int i1362; + int i1363; + int i1364; + int i1365; + int i1366; + int i1367; + int i1368; + int i1369; + int i1370; + int i1371; + int i1372; + int i1373; + int i1374; + int i1375; + int i1376; + int i1377; + int i1378; + int i1379; + int i1380; + int i1381; + int i1382; + int i1383; + int i1384; + int i1385; + int i1386; + int i1387; + int i1388; + int i1389; + int i1390; + int i1391; + int i1392; + int i1393; + int i1394; + int i1395; + int i1396; + int i1397; + int i1398; + int i1399; + int i1400; + int i1401; + int i1402; + int i1403; + int i1404; + int i1405; + int i1406; + int i1407; + int i1408; + int i1409; + int i1410; + int i1411; + int i1412; + int i1413; + int i1414; + int i1415; + int i1416; + int i1417; + int i1418; + int i1419; + int i1420; + int i1421; + int i1422; + int i1423; + int i1424; + int i1425; + int i1426; + int i1427; + int i1428; + int i1429; + int i1430; + int i1431; + int i1432; + int i1433; + int i1434; + int i1435; + int i1436; + int i1437; + int i1438; + int i1439; + int i1440; + int i1441; + int i1442; + int i1443; + int i1444; + int i1445; + int i1446; + int i1447; + int i1448; + int i1449; + int i1450; + int i1451; + int i1452; + int i1453; + int i1454; + int i1455; + int i1456; + int i1457; + int i1458; + int i1459; + int i1460; + int i1461; + int i1462; + int i1463; + int i1464; + int i1465; + int i1466; + int i1467; + int i1468; + int i1469; + int i1470; + int i1471; + int i1472; + int i1473; + int i1474; + int i1475; + int i1476; + int i1477; + int i1478; + int i1479; + int i1480; + int i1481; + int i1482; + int i1483; + int i1484; + int i1485; + int i1486; + int i1487; + int i1488; + int i1489; + int i1490; + int i1491; + int i1492; + int i1493; + int i1494; + int i1495; + int i1496; + int i1497; + int i1498; + int i1499; + int i1500; + int i1501; + int i1502; + int i1503; + int i1504; + int i1505; + int i1506; + int i1507; + int i1508; + int i1509; + int i1510; + int i1511; + int i1512; + int i1513; + int i1514; + int i1515; + int i1516; + int i1517; + int i1518; + int i1519; + int i1520; + int i1521; + int i1522; + int i1523; + int i1524; + int i1525; + int i1526; + int i1527; + int i1528; + int i1529; + int i1530; + int i1531; + int i1532; + int i1533; + int i1534; + int i1535; + int i1536; + int i1537; + int i1538; + int i1539; + int i1540; + int i1541; + int i1542; + int i1543; + int i1544; + int i1545; + int i1546; + int i1547; + int i1548; + int i1549; + int i1550; + int i1551; + int i1552; + int i1553; + int i1554; + int i1555; + int i1556; + int i1557; + int i1558; + int i1559; + int i1560; + int i1561; + int i1562; + int i1563; + int i1564; + int i1565; + int i1566; + int i1567; + int i1568; + int i1569; + int i1570; + int i1571; + int i1572; + int i1573; + int i1574; + int i1575; + int i1576; + int i1577; + int i1578; + int i1579; + int i1580; + int i1581; + int i1582; + int i1583; + int i1584; + int i1585; + int i1586; + int i1587; + int i1588; + int i1589; + int i1590; + int i1591; + int i1592; + int i1593; + int i1594; + int i1595; + int i1596; + int i1597; + int i1598; + int i1599; + int i1600; + int i1601; + int i1602; + int i1603; + int i1604; + int i1605; + int i1606; + int i1607; + int i1608; + int i1609; + int i1610; + int i1611; + int i1612; + int i1613; + int i1614; + int i1615; + int i1616; + int i1617; + int i1618; + int i1619; + int i1620; + int i1621; + int i1622; + int i1623; + int i1624; + int i1625; + int i1626; + int i1627; + int i1628; + int i1629; + int i1630; + int i1631; + int i1632; + int i1633; + int i1634; + int i1635; + int i1636; + int i1637; + int i1638; + int i1639; + int i1640; + int i1641; + int i1642; + int i1643; + int i1644; + int i1645; + int i1646; + int i1647; + int i1648; + int i1649; + int i1650; + int i1651; + int i1652; + int i1653; + int i1654; + int i1655; + int i1656; + int i1657; + int i1658; + int i1659; + int i1660; + int i1661; + int i1662; + int i1663; + int i1664; + int i1665; + int i1666; + int i1667; + int i1668; + int i1669; + int i1670; + int i1671; + int i1672; + int i1673; + int i1674; + int i1675; + int i1676; + int i1677; + int i1678; + int i1679; + int i1680; + int i1681; + int i1682; + int i1683; + int i1684; + int i1685; + int i1686; + int i1687; + int i1688; + int i1689; + int i1690; + int i1691; + int i1692; + int i1693; + int i1694; + int i1695; + int i1696; + int i1697; + int i1698; + int i1699; + int i1700; + int i1701; + int i1702; + int i1703; + int i1704; + int i1705; + int i1706; + int i1707; + int i1708; + int i1709; + int i1710; + int i1711; + int i1712; + int i1713; + int i1714; + int i1715; + int i1716; + int i1717; + int i1718; + int i1719; + int i1720; + int i1721; + int i1722; + int i1723; + int i1724; + int i1725; + int i1726; + int i1727; + int i1728; + int i1729; + int i1730; + int i1731; + int i1732; + int i1733; + int i1734; + int i1735; + int i1736; + int i1737; + int i1738; + int i1739; + int i1740; + int i1741; + int i1742; + int i1743; + int i1744; + int i1745; + int i1746; + int i1747; + int i1748; + int i1749; + int i1750; + int i1751; + int i1752; + int i1753; + int i1754; + int i1755; + int i1756; + int i1757; + int i1758; + int i1759; + int i1760; + int i1761; + int i1762; + int i1763; + int i1764; + int i1765; + int i1766; + int i1767; + int i1768; + int i1769; + int i1770; + int i1771; + int i1772; + int i1773; + int i1774; + int i1775; + int i1776; + int i1777; + int i1778; + int i1779; + int i1780; + int i1781; + int i1782; + int i1783; + int i1784; + int i1785; + int i1786; + int i1787; + int i1788; + int i1789; + int i1790; + int i1791; + int i1792; + int i1793; + int i1794; + int i1795; + int i1796; + int i1797; + int i1798; + int i1799; + int i1800; + int i1801; + int i1802; + int i1803; + int i1804; + int i1805; + int i1806; + int i1807; + int i1808; + int i1809; + int i1810; + int i1811; + int i1812; + int i1813; + int i1814; + int i1815; + int i1816; + int i1817; + int i1818; + int i1819; + int i1820; + int i1821; + int i1822; + int i1823; + int i1824; + int i1825; + int i1826; + int i1827; + int i1828; + int i1829; + int i1830; + int i1831; + int i1832; + int i1833; + int i1834; + int i1835; + int i1836; + int i1837; + int i1838; + int i1839; + int i1840; + int i1841; + int i1842; + int i1843; + int i1844; + int i1845; + int i1846; + int i1847; + int i1848; + int i1849; + int i1850; + int i1851; + int i1852; + int i1853; + int i1854; + int i1855; + int i1856; + int i1857; + int i1858; + int i1859; + int i1860; + int i1861; + int i1862; + int i1863; + int i1864; + int i1865; + int i1866; + int i1867; + int i1868; + int i1869; + int i1870; + int i1871; + int i1872; + int i1873; + int i1874; + int i1875; + int i1876; + int i1877; + int i1878; + int i1879; + int i1880; + int i1881; + int i1882; + int i1883; + int i1884; + int i1885; + int i1886; + int i1887; + int i1888; + int i1889; + int i1890; + int i1891; + int i1892; + int i1893; + int i1894; + int i1895; + int i1896; + int i1897; + int i1898; + int i1899; + int i1900; + int i1901; + int i1902; + int i1903; + int i1904; + int i1905; + int i1906; + int i1907; + int i1908; + int i1909; + int i1910; + int i1911; + int i1912; + int i1913; + int i1914; + int i1915; + int i1916; + int i1917; + int i1918; + int i1919; + int i1920; + int i1921; + int i1922; + int i1923; + int i1924; + int i1925; + int i1926; + int i1927; + int i1928; + int i1929; + int i1930; + int i1931; + int i1932; + int i1933; + int i1934; + int i1935; + int i1936; + int i1937; + int i1938; + int i1939; + int i1940; + int i1941; + int i1942; + int i1943; + int i1944; + int i1945; + int i1946; + int i1947; + int i1948; + int i1949; + int i1950; + int i1951; + int i1952; + int i1953; + int i1954; + int i1955; + int i1956; + int i1957; + int i1958; + int i1959; + int i1960; + int i1961; + int i1962; + int i1963; + int i1964; + int i1965; + int i1966; + int i1967; + int i1968; + int i1969; + int i1970; + int i1971; + int i1972; + int i1973; + int i1974; + int i1975; + int i1976; + int i1977; + int i1978; + int i1979; + int i1980; + int i1981; + int i1982; + int i1983; + int i1984; + int i1985; + int i1986; + int i1987; + int i1988; + int i1989; + int i1990; + int i1991; + int i1992; + int i1993; + int i1994; + int i1995; + int i1996; + int i1997; + int i1998; + int i1999; + int i2000; + int i2001; + int i2002; + int i2003; + int i2004; + int i2005; + int i2006; + int i2007; + int i2008; + int i2009; + int i2010; + int i2011; + int i2012; + int i2013; + int i2014; + int i2015; + int i2016; + int i2017; + int i2018; + int i2019; + int i2020; + int i2021; + int i2022; + int i2023; + int i2024; + int i2025; + int i2026; + int i2027; + int i2028; + int i2029; + int i2030; + int i2031; + int i2032; + int i2033; + int i2034; + int i2035; + int i2036; + int i2037; + int i2038; + int i2039; + int i2040; + int i2041; + int i2042; + int i2043; + int i2044; + int i2045; + int i2046; + int i2047; + int i2048; + int i2049; + int i2050; + int i2051; + int i2052; + int i2053; + int i2054; + int i2055; + int i2056; + int i2057; + int i2058; + int i2059; + int i2060; + int i2061; + int i2062; + int i2063; + int i2064; + int i2065; + int i2066; + int i2067; + int i2068; + int i2069; + int i2070; + int i2071; + int i2072; + int i2073; + int i2074; + int i2075; + int i2076; + int i2077; + int i2078; + int i2079; + int i2080; + int i2081; + int i2082; + int i2083; + int i2084; + int i2085; + int i2086; + int i2087; + int i2088; + int i2089; + int i2090; + int i2091; + int i2092; + int i2093; + int i2094; + int i2095; + int i2096; + int i2097; + int i2098; + int i2099; + int i2100; + int i2101; + int i2102; + int i2103; + int i2104; + int i2105; + int i2106; + int i2107; + int i2108; + int i2109; + int i2110; + int i2111; + int i2112; + int i2113; + int i2114; + int i2115; + int i2116; + int i2117; + int i2118; + int i2119; + int i2120; + int i2121; + int i2122; + int i2123; + int i2124; + int i2125; + int i2126; + int i2127; + int i2128; + int i2129; + int i2130; + int i2131; + int i2132; + int i2133; + int i2134; + int i2135; + int i2136; + int i2137; + int i2138; + int i2139; + int i2140; + int i2141; + int i2142; + int i2143; + int i2144; + int i2145; + int i2146; + int i2147; + int i2148; + int i2149; + int i2150; + int i2151; + int i2152; + int i2153; + int i2154; + int i2155; + int i2156; + int i2157; + int i2158; + int i2159; + int i2160; + int i2161; + int i2162; + int i2163; + int i2164; + int i2165; + int i2166; + int i2167; + int i2168; + int i2169; + int i2170; + int i2171; + int i2172; + int i2173; + int i2174; + int i2175; + int i2176; + int i2177; + int i2178; + int i2179; + int i2180; + int i2181; + int i2182; + int i2183; + int i2184; + int i2185; + int i2186; + int i2187; + int i2188; + int i2189; + int i2190; + int i2191; + int i2192; + int i2193; + int i2194; + int i2195; + int i2196; + int i2197; + int i2198; + int i2199; + int i2200; + int i2201; + int i2202; + int i2203; + int i2204; + int i2205; + int i2206; + int i2207; + int i2208; + int i2209; + int i2210; + int i2211; + int i2212; + int i2213; + int i2214; + int i2215; + int i2216; + int i2217; + int i2218; + int i2219; + int i2220; + int i2221; + int i2222; + int i2223; + int i2224; + int i2225; + int i2226; + int i2227; + int i2228; + int i2229; + int i2230; + int i2231; + int i2232; + int i2233; + int i2234; + int i2235; + int i2236; + int i2237; + int i2238; + int i2239; + int i2240; + int i2241; + int i2242; + int i2243; + int i2244; + int i2245; + int i2246; + int i2247; + int i2248; + int i2249; + int i2250; + int i2251; + int i2252; + int i2253; + int i2254; + int i2255; + int i2256; + int i2257; + int i2258; + int i2259; + int i2260; + int i2261; + int i2262; + int i2263; + int i2264; + int i2265; + int i2266; + int i2267; + int i2268; + int i2269; + int i2270; + int i2271; + int i2272; + int i2273; + int i2274; + int i2275; + int i2276; + int i2277; + int i2278; + int i2279; + int i2280; + int i2281; + int i2282; + int i2283; + int i2284; + int i2285; + int i2286; + int i2287; + int i2288; + int i2289; + int i2290; + int i2291; + int i2292; + int i2293; + int i2294; + int i2295; + int i2296; + int i2297; + int i2298; + int i2299; + int i2300; + int i2301; + int i2302; + int i2303; + int i2304; + int i2305; + int i2306; + int i2307; + int i2308; + int i2309; + int i2310; + int i2311; + int i2312; + int i2313; + int i2314; + int i2315; + int i2316; + int i2317; + int i2318; + int i2319; + int i2320; + int i2321; + int i2322; + int i2323; + int i2324; + int i2325; + int i2326; + int i2327; + int i2328; + int i2329; + int i2330; + int i2331; + int i2332; + int i2333; + int i2334; + int i2335; + int i2336; + int i2337; + int i2338; + int i2339; + int i2340; + int i2341; + int i2342; + int i2343; + int i2344; + int i2345; + int i2346; + int i2347; + int i2348; + int i2349; + int i2350; + int i2351; + int i2352; + int i2353; + int i2354; + int i2355; + int i2356; + int i2357; + int i2358; + int i2359; + int i2360; + int i2361; + int i2362; + int i2363; + int i2364; + int i2365; + int i2366; + int i2367; + int i2368; + int i2369; + int i2370; + int i2371; + int i2372; + int i2373; + int i2374; + int i2375; + int i2376; + int i2377; + int i2378; + int i2379; + int i2380; + int i2381; + int i2382; + int i2383; + int i2384; + int i2385; + int i2386; + int i2387; + int i2388; + int i2389; + int i2390; + int i2391; + int i2392; + int i2393; + int i2394; + int i2395; + int i2396; + int i2397; + int i2398; + int i2399; + int i2400; + int i2401; + int i2402; + int i2403; + int i2404; + int i2405; + int i2406; + int i2407; + int i2408; + int i2409; + int i2410; + int i2411; + int i2412; + int i2413; + int i2414; + int i2415; + int i2416; + int i2417; + int i2418; + int i2419; + int i2420; + int i2421; + int i2422; + int i2423; + int i2424; + int i2425; + int i2426; + int i2427; + int i2428; + int i2429; + int i2430; + int i2431; + int i2432; + int i2433; + int i2434; + int i2435; + int i2436; + int i2437; + int i2438; + int i2439; + int i2440; + int i2441; + int i2442; + int i2443; + int i2444; + int i2445; + int i2446; + int i2447; + int i2448; + int i2449; + int i2450; + int i2451; + int i2452; + int i2453; + int i2454; + int i2455; + int i2456; + int i2457; + int i2458; + int i2459; + int i2460; + int i2461; + int i2462; + int i2463; + int i2464; + int i2465; + int i2466; + int i2467; + int i2468; + int i2469; + int i2470; + int i2471; + int i2472; + int i2473; + int i2474; + int i2475; + int i2476; + int i2477; + int i2478; + int i2479; + int i2480; + int i2481; + int i2482; + int i2483; + int i2484; + int i2485; + int i2486; + int i2487; + int i2488; + int i2489; + int i2490; + int i2491; + int i2492; + int i2493; + int i2494; + int i2495; + int i2496; + int i2497; + int i2498; + int i2499; + int i2500; + int i2501; + int i2502; + int i2503; + int i2504; + int i2505; + int i2506; + int i2507; + int i2508; + int i2509; + int i2510; + int i2511; + int i2512; + int i2513; + int i2514; + int i2515; + int i2516; + int i2517; + int i2518; + int i2519; + int i2520; + int i2521; + int i2522; + int i2523; + int i2524; + int i2525; + int i2526; + int i2527; + int i2528; + int i2529; + int i2530; + int i2531; + int i2532; + int i2533; + int i2534; + int i2535; + int i2536; + int i2537; + int i2538; + int i2539; + int i2540; + int i2541; + int i2542; + int i2543; + int i2544; + int i2545; + int i2546; + int i2547; + int i2548; + int i2549; + int i2550; + int i2551; + int i2552; + int i2553; + int i2554; + int i2555; + int i2556; + int i2557; + int i2558; + int i2559; + int i2560; + int i2561; + int i2562; + int i2563; + int i2564; + int i2565; + int i2566; + int i2567; + int i2568; + int i2569; + int i2570; + int i2571; + int i2572; + int i2573; + int i2574; + int i2575; + int i2576; + int i2577; + int i2578; + int i2579; + int i2580; + int i2581; + int i2582; + int i2583; + int i2584; + int i2585; + int i2586; + int i2587; + int i2588; + int i2589; + int i2590; + int i2591; + int i2592; + int i2593; + int i2594; + int i2595; + int i2596; + int i2597; + int i2598; + int i2599; + int i2600; + int i2601; + int i2602; + int i2603; + int i2604; + int i2605; + int i2606; + int i2607; + int i2608; + int i2609; + int i2610; + int i2611; + int i2612; + int i2613; + int i2614; + int i2615; + int i2616; + int i2617; + int i2618; + int i2619; + int i2620; + int i2621; + int i2622; + int i2623; + int i2624; + int i2625; + int i2626; + int i2627; + int i2628; + int i2629; + int i2630; + int i2631; + int i2632; + int i2633; + int i2634; + int i2635; + int i2636; + int i2637; + int i2638; + int i2639; + int i2640; + int i2641; + int i2642; + int i2643; + int i2644; + int i2645; + int i2646; + int i2647; + int i2648; + int i2649; + int i2650; + int i2651; + int i2652; + int i2653; + int i2654; + int i2655; + int i2656; + int i2657; + int i2658; + int i2659; + int i2660; + int i2661; + int i2662; + int i2663; + int i2664; + int i2665; + int i2666; + int i2667; + int i2668; + int i2669; + int i2670; + int i2671; + int i2672; + int i2673; + int i2674; + int i2675; + int i2676; + int i2677; + int i2678; + int i2679; + int i2680; + int i2681; + int i2682; + int i2683; + int i2684; + int i2685; + int i2686; + int i2687; + int i2688; + int i2689; + int i2690; + int i2691; + int i2692; + int i2693; + int i2694; + int i2695; + int i2696; + int i2697; + int i2698; + int i2699; + int i2700; + int i2701; + int i2702; + int i2703; + int i2704; + int i2705; + int i2706; + int i2707; + int i2708; + int i2709; + int i2710; + int i2711; + int i2712; + int i2713; + int i2714; + int i2715; + int i2716; + int i2717; + int i2718; + int i2719; + int i2720; + int i2721; + int i2722; + int i2723; + int i2724; + int i2725; + int i2726; + int i2727; + int i2728; + int i2729; + int i2730; + int i2731; + int i2732; + int i2733; + int i2734; + int i2735; + int i2736; + int i2737; + int i2738; + int i2739; + int i2740; + int i2741; + int i2742; + int i2743; + int i2744; + int i2745; + int i2746; + int i2747; + int i2748; + int i2749; + int i2750; + int i2751; + int i2752; + int i2753; + int i2754; + int i2755; + int i2756; + int i2757; + int i2758; + int i2759; + int i2760; + int i2761; + int i2762; + int i2763; + int i2764; + int i2765; + int i2766; + int i2767; + int i2768; + int i2769; + int i2770; + int i2771; + int i2772; + int i2773; + int i2774; + int i2775; + int i2776; + int i2777; + int i2778; + int i2779; + int i2780; + int i2781; + int i2782; + int i2783; + int i2784; + int i2785; + int i2786; + int i2787; + int i2788; + int i2789; + int i2790; + int i2791; + int i2792; + int i2793; + int i2794; + int i2795; + int i2796; + int i2797; + int i2798; + int i2799; + int i2800; + int i2801; + int i2802; + int i2803; + int i2804; + int i2805; + int i2806; + int i2807; + int i2808; + int i2809; + int i2810; + int i2811; + int i2812; + int i2813; + int i2814; + int i2815; + int i2816; + int i2817; + int i2818; + int i2819; + int i2820; + int i2821; + int i2822; + int i2823; + int i2824; + int i2825; + int i2826; + int i2827; + int i2828; + int i2829; + int i2830; + int i2831; + int i2832; + int i2833; + int i2834; + int i2835; + int i2836; + int i2837; + int i2838; + int i2839; + int i2840; + int i2841; + int i2842; + int i2843; + int i2844; + int i2845; + int i2846; + int i2847; + int i2848; + int i2849; + int i2850; + int i2851; + int i2852; + int i2853; + int i2854; + int i2855; + int i2856; + int i2857; + int i2858; + int i2859; + int i2860; + int i2861; + int i2862; + int i2863; + int i2864; + int i2865; + int i2866; + int i2867; + int i2868; + int i2869; + int i2870; + int i2871; + int i2872; + int i2873; + int i2874; + int i2875; + int i2876; + int i2877; + int i2878; + int i2879; + int i2880; + int i2881; + int i2882; + int i2883; + int i2884; + int i2885; + int i2886; + int i2887; + int i2888; + int i2889; + int i2890; + int i2891; + int i2892; + int i2893; + int i2894; + int i2895; + int i2896; + int i2897; + int i2898; + int i2899; + int i2900; + int i2901; + int i2902; + int i2903; + int i2904; + int i2905; + int i2906; + int i2907; + int i2908; + int i2909; + int i2910; + int i2911; + int i2912; + int i2913; + int i2914; + int i2915; + int i2916; + int i2917; + int i2918; + int i2919; + int i2920; + int i2921; + int i2922; + int i2923; + int i2924; + int i2925; + int i2926; + int i2927; + int i2928; + int i2929; + int i2930; + int i2931; + int i2932; + int i2933; + int i2934; + int i2935; + int i2936; + int i2937; + int i2938; + int i2939; + int i2940; + int i2941; + int i2942; + int i2943; + int i2944; + int i2945; + int i2946; + int i2947; + int i2948; + int i2949; + int i2950; + int i2951; + int i2952; + int i2953; + int i2954; + int i2955; + int i2956; + int i2957; + int i2958; + int i2959; + int i2960; + int i2961; + int i2962; + int i2963; + int i2964; + int i2965; + int i2966; + int i2967; + int i2968; + int i2969; + int i2970; + int i2971; + int i2972; + int i2973; + int i2974; + int i2975; + int i2976; + int i2977; + int i2978; + int i2979; + int i2980; + int i2981; + int i2982; + int i2983; + int i2984; + int i2985; + int i2986; + int i2987; + int i2988; + int i2989; + int i2990; + int i2991; + int i2992; + int i2993; + int i2994; + int i2995; + int i2996; + int i2997; + int i2998; + int i2999; + int i3000; + int i3001; + int i3002; + int i3003; + int i3004; + int i3005; + int i3006; + int i3007; + int i3008; + int i3009; + int i3010; + int i3011; + int i3012; + int i3013; + int i3014; + int i3015; + int i3016; + int i3017; + int i3018; + int i3019; + int i3020; + int i3021; + int i3022; + int i3023; + int i3024; + int i3025; + int i3026; + int i3027; + int i3028; + int i3029; + int i3030; + int i3031; + int i3032; + int i3033; + int i3034; + int i3035; + int i3036; + int i3037; + int i3038; + int i3039; + int i3040; + int i3041; + int i3042; + int i3043; + int i3044; + int i3045; + int i3046; + int i3047; + int i3048; + int i3049; + int i3050; + int i3051; + int i3052; + int i3053; + int i3054; + int i3055; + int i3056; + int i3057; + int i3058; + int i3059; + int i3060; + int i3061; + int i3062; + int i3063; + int i3064; + int i3065; + int i3066; + int i3067; + int i3068; + int i3069; + int i3070; + int i3071; + int i3072; + int i3073; + int i3074; + int i3075; + int i3076; + int i3077; + int i3078; + int i3079; + int i3080; + int i3081; + int i3082; + int i3083; + int i3084; + int i3085; + int i3086; + int i3087; + int i3088; + int i3089; + int i3090; + int i3091; + int i3092; + int i3093; + int i3094; + int i3095; + int i3096; + int i3097; + int i3098; + int i3099; + int i3100; + int i3101; + int i3102; + int i3103; + int i3104; + int i3105; + int i3106; + int i3107; + int i3108; + int i3109; + int i3110; + int i3111; + int i3112; + int i3113; + int i3114; + int i3115; + int i3116; + int i3117; + int i3118; + int i3119; + int i3120; + int i3121; + int i3122; + int i3123; + int i3124; + int i3125; + int i3126; + int i3127; + int i3128; + int i3129; + int i3130; + int i3131; + int i3132; + int i3133; + int i3134; + int i3135; + int i3136; + int i3137; + int i3138; + int i3139; + int i3140; + int i3141; + int i3142; + int i3143; + int i3144; + int i3145; + int i3146; + int i3147; + int i3148; + int i3149; + int i3150; + int i3151; + int i3152; + int i3153; + int i3154; + int i3155; + int i3156; + int i3157; + int i3158; + int i3159; + int i3160; + int i3161; + int i3162; + int i3163; + int i3164; + int i3165; + int i3166; + int i3167; + int i3168; + int i3169; + int i3170; + int i3171; + int i3172; + int i3173; + int i3174; + int i3175; + int i3176; + int i3177; + int i3178; + int i3179; + int i3180; + int i3181; + int i3182; + int i3183; + int i3184; + int i3185; + int i3186; + int i3187; + int i3188; + int i3189; + int i3190; + int i3191; + int i3192; + int i3193; + int i3194; + int i3195; + int i3196; + int i3197; + int i3198; + int i3199; + int i3200; + int i3201; + int i3202; + int i3203; + int i3204; + int i3205; + int i3206; + int i3207; + int i3208; + int i3209; + int i3210; + int i3211; + int i3212; + int i3213; + int i3214; + int i3215; + int i3216; + int i3217; + int i3218; + int i3219; + int i3220; + int i3221; + int i3222; + int i3223; + int i3224; + int i3225; + int i3226; + int i3227; + int i3228; + int i3229; + int i3230; + int i3231; + int i3232; + int i3233; + int i3234; + int i3235; + int i3236; + int i3237; + int i3238; + int i3239; + int i3240; + int i3241; + int i3242; + int i3243; + int i3244; + int i3245; + int i3246; + int i3247; + int i3248; + int i3249; + int i3250; + int i3251; + int i3252; + int i3253; + int i3254; + int i3255; + int i3256; + int i3257; + int i3258; + int i3259; + int i3260; + int i3261; + int i3262; + int i3263; + int i3264; + int i3265; + int i3266; + int i3267; + int i3268; + int i3269; + int i3270; + int i3271; + int i3272; + int i3273; + int i3274; + int i3275; + int i3276; + int i3277; + int i3278; + int i3279; + int i3280; + int i3281; + int i3282; + int i3283; + int i3284; + int i3285; + int i3286; + int i3287; + int i3288; + int i3289; + int i3290; + int i3291; + int i3292; + int i3293; + int i3294; + int i3295; + int i3296; + int i3297; + int i3298; + int i3299; + int i3300; + int i3301; + int i3302; + int i3303; + int i3304; + int i3305; + int i3306; + int i3307; + int i3308; + int i3309; + int i3310; + int i3311; + int i3312; + int i3313; + int i3314; + int i3315; + int i3316; + int i3317; + int i3318; + int i3319; + int i3320; + int i3321; + int i3322; + int i3323; + int i3324; + int i3325; + int i3326; + int i3327; + int i3328; + int i3329; + int i3330; + int i3331; + int i3332; + int i3333; + int i3334; + int i3335; + int i3336; + int i3337; + int i3338; + int i3339; + int i3340; + int i3341; + int i3342; + int i3343; + int i3344; + int i3345; + int i3346; + int i3347; + int i3348; + int i3349; + int i3350; + int i3351; + int i3352; + int i3353; + int i3354; + int i3355; + int i3356; + int i3357; + int i3358; + int i3359; + int i3360; + int i3361; + int i3362; + int i3363; + int i3364; + int i3365; + int i3366; + int i3367; + int i3368; + int i3369; + int i3370; + int i3371; + int i3372; + int i3373; + int i3374; + int i3375; + int i3376; + int i3377; + int i3378; + int i3379; + int i3380; + int i3381; + int i3382; + int i3383; + int i3384; + int i3385; + int i3386; + int i3387; + int i3388; + int i3389; + int i3390; + int i3391; + int i3392; + int i3393; + int i3394; + int i3395; + int i3396; + int i3397; + int i3398; + int i3399; + int i3400; + int i3401; + int i3402; + int i3403; + int i3404; + int i3405; + int i3406; + int i3407; + int i3408; + int i3409; + int i3410; + int i3411; + int i3412; + int i3413; + int i3414; + int i3415; + int i3416; + int i3417; + int i3418; + int i3419; + int i3420; + int i3421; + int i3422; + int i3423; + int i3424; + int i3425; + int i3426; + int i3427; + int i3428; + int i3429; + int i3430; + int i3431; + int i3432; + int i3433; + int i3434; + int i3435; + int i3436; + int i3437; + int i3438; + int i3439; + int i3440; + int i3441; + int i3442; + int i3443; + int i3444; + int i3445; + int i3446; + int i3447; + int i3448; + int i3449; + int i3450; + int i3451; + int i3452; + int i3453; + int i3454; + int i3455; + int i3456; + int i3457; + int i3458; + int i3459; + int i3460; + int i3461; + int i3462; + int i3463; + int i3464; + int i3465; + int i3466; + int i3467; + int i3468; + int i3469; + int i3470; + int i3471; + int i3472; + int i3473; + int i3474; + int i3475; + int i3476; + int i3477; + int i3478; + int i3479; + int i3480; + int i3481; + int i3482; + int i3483; + int i3484; + int i3485; + int i3486; + int i3487; + int i3488; + int i3489; + int i3490; + int i3491; + int i3492; + int i3493; + int i3494; + int i3495; + int i3496; + int i3497; + int i3498; + int i3499; + int i3500; + int i3501; + int i3502; + int i3503; + int i3504; + int i3505; + int i3506; + int i3507; + int i3508; + int i3509; + int i3510; + int i3511; + int i3512; + int i3513; + int i3514; + int i3515; + int i3516; + int i3517; + int i3518; + int i3519; + int i3520; + int i3521; + int i3522; + int i3523; + int i3524; + int i3525; + int i3526; + int i3527; + int i3528; + int i3529; + int i3530; + int i3531; + int i3532; + int i3533; + int i3534; + int i3535; + int i3536; + int i3537; + int i3538; + int i3539; + int i3540; + int i3541; + int i3542; + int i3543; + int i3544; + int i3545; + int i3546; + int i3547; + int i3548; + int i3549; + int i3550; + int i3551; + int i3552; + int i3553; + int i3554; + int i3555; + int i3556; + int i3557; + int i3558; + int i3559; + int i3560; + int i3561; + int i3562; + int i3563; + int i3564; + int i3565; + int i3566; + int i3567; + int i3568; + int i3569; + int i3570; + int i3571; + int i3572; + int i3573; + int i3574; + int i3575; + int i3576; + int i3577; + int i3578; + int i3579; + int i3580; + int i3581; + int i3582; + int i3583; + int i3584; + int i3585; + int i3586; + int i3587; + int i3588; + int i3589; + int i3590; + int i3591; + int i3592; + int i3593; + int i3594; + int i3595; + int i3596; + int i3597; + int i3598; + int i3599; + int i3600; + int i3601; + int i3602; + int i3603; + int i3604; + int i3605; + int i3606; + int i3607; + int i3608; + int i3609; + int i3610; + int i3611; + int i3612; + int i3613; + int i3614; + int i3615; + int i3616; + int i3617; + int i3618; + int i3619; + int i3620; + int i3621; + int i3622; + int i3623; + int i3624; + int i3625; + int i3626; + int i3627; + int i3628; + int i3629; + int i3630; + int i3631; + int i3632; + int i3633; + int i3634; + int i3635; + int i3636; + int i3637; + int i3638; + int i3639; + int i3640; + int i3641; + int i3642; + int i3643; + int i3644; + int i3645; + int i3646; + int i3647; + int i3648; + int i3649; + int i3650; + int i3651; + int i3652; + int i3653; + int i3654; + int i3655; + int i3656; + int i3657; + int i3658; + int i3659; + int i3660; + int i3661; + int i3662; + int i3663; + int i3664; + int i3665; + int i3666; + int i3667; + int i3668; + int i3669; + int i3670; + int i3671; + int i3672; + int i3673; + int i3674; + int i3675; + int i3676; + int i3677; + int i3678; + int i3679; + int i3680; + int i3681; + int i3682; + int i3683; + int i3684; + int i3685; + int i3686; + int i3687; + int i3688; + int i3689; + int i3690; + int i3691; + int i3692; + int i3693; + int i3694; + int i3695; + int i3696; + int i3697; + int i3698; + int i3699; + int i3700; + int i3701; + int i3702; + int i3703; + int i3704; + int i3705; + int i3706; + int i3707; + int i3708; + int i3709; + int i3710; + int i3711; + int i3712; + int i3713; + int i3714; + int i3715; + int i3716; + int i3717; + int i3718; + int i3719; + int i3720; + int i3721; + int i3722; + int i3723; + int i3724; + int i3725; + int i3726; + int i3727; + int i3728; + int i3729; + int i3730; + int i3731; + int i3732; + int i3733; + int i3734; + int i3735; + int i3736; + int i3737; + int i3738; + int i3739; + int i3740; + int i3741; + int i3742; + int i3743; + int i3744; + int i3745; + int i3746; + int i3747; + int i3748; + int i3749; + int i3750; + int i3751; + int i3752; + int i3753; + int i3754; + int i3755; + int i3756; + int i3757; + int i3758; + int i3759; + int i3760; + int i3761; + int i3762; + int i3763; + int i3764; + int i3765; + int i3766; + int i3767; + int i3768; + int i3769; + int i3770; + int i3771; + int i3772; + int i3773; + int i3774; + int i3775; + int i3776; + int i3777; + int i3778; + int i3779; + int i3780; + int i3781; + int i3782; + int i3783; + int i3784; + int i3785; + int i3786; + int i3787; + int i3788; + int i3789; + int i3790; + int i3791; + int i3792; + int i3793; + int i3794; + int i3795; + int i3796; + int i3797; + int i3798; + int i3799; + int i3800; + int i3801; + int i3802; + int i3803; + int i3804; + int i3805; + int i3806; + int i3807; + int i3808; + int i3809; + int i3810; + int i3811; + int i3812; + int i3813; + int i3814; + int i3815; + int i3816; + int i3817; + int i3818; + int i3819; + int i3820; + int i3821; + int i3822; + int i3823; + int i3824; + int i3825; + int i3826; + int i3827; + int i3828; + int i3829; + int i3830; + int i3831; + int i3832; + int i3833; + int i3834; + int i3835; + int i3836; + int i3837; + int i3838; + int i3839; + int i3840; + int i3841; + int i3842; + int i3843; + int i3844; + int i3845; + int i3846; + int i3847; + int i3848; + int i3849; + int i3850; + int i3851; + int i3852; + int i3853; + int i3854; + int i3855; + int i3856; + int i3857; + int i3858; + int i3859; + int i3860; + int i3861; + int i3862; + int i3863; + int i3864; + int i3865; + int i3866; + int i3867; + int i3868; + int i3869; + int i3870; + int i3871; + int i3872; + int i3873; + int i3874; + int i3875; + int i3876; + int i3877; + int i3878; + int i3879; + int i3880; + int i3881; + int i3882; + int i3883; + int i3884; + int i3885; + int i3886; + int i3887; + int i3888; + int i3889; + int i3890; + int i3891; + int i3892; + int i3893; + int i3894; + int i3895; + int i3896; + int i3897; + int i3898; + int i3899; + int i3900; + int i3901; + int i3902; + int i3903; + int i3904; + int i3905; + int i3906; + int i3907; + int i3908; + int i3909; + int i3910; + int i3911; + int i3912; + int i3913; + int i3914; + int i3915; + int i3916; + int i3917; + int i3918; + int i3919; + int i3920; + int i3921; + int i3922; + int i3923; + int i3924; + int i3925; + int i3926; + int i3927; + int i3928; + int i3929; + int i3930; + int i3931; + int i3932; + int i3933; + int i3934; + int i3935; + int i3936; + int i3937; + int i3938; + int i3939; + int i3940; + int i3941; + int i3942; + int i3943; + int i3944; + int i3945; + int i3946; + int i3947; + int i3948; + int i3949; + int i3950; + int i3951; + int i3952; + int i3953; + int i3954; + int i3955; + int i3956; + int i3957; + int i3958; + int i3959; + int i3960; + int i3961; + int i3962; + int i3963; + int i3964; + int i3965; + int i3966; + int i3967; + int i3968; + int i3969; + int i3970; + int i3971; + int i3972; + int i3973; + int i3974; + int i3975; + int i3976; + int i3977; + int i3978; + int i3979; + int i3980; + int i3981; + int i3982; + int i3983; + int i3984; + int i3985; + int i3986; + int i3987; + int i3988; + int i3989; + int i3990; + int i3991; + int i3992; + int i3993; + int i3994; + int i3995; + int i3996; + int i3997; + int i3998; + int i3999; + int i4000; + int i4001; + int i4002; + int i4003; + int i4004; + int i4005; + int i4006; + int i4007; + int i4008; + int i4009; + int i4010; + int i4011; + int i4012; + int i4013; + int i4014; + int i4015; + int i4016; + int i4017; + int i4018; + int i4019; + int i4020; + int i4021; + int i4022; + int i4023; + int i4024; + int i4025; + int i4026; + int i4027; + int i4028; + int i4029; + int i4030; + int i4031; + int i4032; + int i4033; + int i4034; + int i4035; + int i4036; + int i4037; + int i4038; + int i4039; + int i4040; + int i4041; + int i4042; + int i4043; + int i4044; + int i4045; + int i4046; + int i4047; + int i4048; + int i4049; + int i4050; + int i4051; + int i4052; + int i4053; + int i4054; + int i4055; + int i4056; + int i4057; + int i4058; + int i4059; + int i4060; + int i4061; + int i4062; + int i4063; + int i4064; + int i4065; + int i4066; + int i4067; + int i4068; + int i4069; + int i4070; + int i4071; + int i4072; + int i4073; + int i4074; + int i4075; + int i4076; + int i4077; + int i4078; + int i4079; + int i4080; + int i4081; + int i4082; + int i4083; + int i4084; + int i4085; + int i4086; + int i4087; + int i4088; + int i4089; + int i4090; + int i4091; + int i4092; + int i4093; + int i4094; + int i4095; + int i4096; + int i4097; + int i4098; + int i4099; + int i4100; + int i4101; + int i4102; + int i4103; + int i4104; + int i4105; + int i4106; + int i4107; + int i4108; + int i4109; + int i4110; + int i4111; + int i4112; + int i4113; + int i4114; + int i4115; + int i4116; + int i4117; + int i4118; + int i4119; + int i4120; + int i4121; + int i4122; + int i4123; + int i4124; + int i4125; + int i4126; + int i4127; + int i4128; + int i4129; + int i4130; + int i4131; + int i4132; + int i4133; + int i4134; + int i4135; + int i4136; + int i4137; + int i4138; + int i4139; + int i4140; + int i4141; + int i4142; + int i4143; + int i4144; + int i4145; + int i4146; + int i4147; + int i4148; + int i4149; + int i4150; + int i4151; + int i4152; + int i4153; + int i4154; + int i4155; + int i4156; + int i4157; + int i4158; + int i4159; + int i4160; + int i4161; + int i4162; + int i4163; + int i4164; + int i4165; + int i4166; + int i4167; + int i4168; + int i4169; + int i4170; + int i4171; + int i4172; + int i4173; + int i4174; + int i4175; + int i4176; + int i4177; + int i4178; + int i4179; + int i4180; + int i4181; + int i4182; + int i4183; + int i4184; + int i4185; + int i4186; + int i4187; + int i4188; + int i4189; + int i4190; + int i4191; + int i4192; + int i4193; + int i4194; + int i4195; + int i4196; + int i4197; + int i4198; + int i4199; + int i4200; + int i4201; + int i4202; + int i4203; + int i4204; + int i4205; + int i4206; + int i4207; + int i4208; + int i4209; + int i4210; + int i4211; + int i4212; + int i4213; + int i4214; + int i4215; + int i4216; + int i4217; + int i4218; + int i4219; + int i4220; + int i4221; + int i4222; + int i4223; + int i4224; + int i4225; + int i4226; + int i4227; + int i4228; + int i4229; + int i4230; + int i4231; + int i4232; + int i4233; + int i4234; + int i4235; + int i4236; + int i4237; + int i4238; + int i4239; + int i4240; + int i4241; + int i4242; + int i4243; + int i4244; + int i4245; + int i4246; + int i4247; + int i4248; + int i4249; + int i4250; + int i4251; + int i4252; + int i4253; + int i4254; + int i4255; + int i4256; + int i4257; + int i4258; + int i4259; + int i4260; + int i4261; + int i4262; + int i4263; + int i4264; + int i4265; + int i4266; + int i4267; + int i4268; + int i4269; + int i4270; + int i4271; + int i4272; + int i4273; + int i4274; + int i4275; + int i4276; + int i4277; + int i4278; + int i4279; + int i4280; + int i4281; + int i4282; + int i4283; + int i4284; + int i4285; + int i4286; + int i4287; + int i4288; + int i4289; + int i4290; + int i4291; + int i4292; + int i4293; + int i4294; + int i4295; + int i4296; + int i4297; + int i4298; + int i4299; + int i4300; + int i4301; + int i4302; + int i4303; + int i4304; + int i4305; + int i4306; + int i4307; + int i4308; + int i4309; + int i4310; + int i4311; + int i4312; + int i4313; + int i4314; + int i4315; + int i4316; + int i4317; + int i4318; + int i4319; + int i4320; + int i4321; + int i4322; + int i4323; + int i4324; + int i4325; + int i4326; + int i4327; + int i4328; + int i4329; + int i4330; + int i4331; + int i4332; + int i4333; + int i4334; + int i4335; + int i4336; + int i4337; + int i4338; + int i4339; + int i4340; + int i4341; + int i4342; + int i4343; + int i4344; + int i4345; + int i4346; + int i4347; + int i4348; + int i4349; + int i4350; + int i4351; + int i4352; + int i4353; + int i4354; + int i4355; + int i4356; + int i4357; + int i4358; + int i4359; + int i4360; + int i4361; + int i4362; + int i4363; + int i4364; + int i4365; + int i4366; + int i4367; + int i4368; + int i4369; + int i4370; + int i4371; + int i4372; + int i4373; + int i4374; + int i4375; + int i4376; + int i4377; + int i4378; + int i4379; + int i4380; + int i4381; + int i4382; + int i4383; + int i4384; + int i4385; + int i4386; + int i4387; + int i4388; + int i4389; + int i4390; + int i4391; + int i4392; + int i4393; + int i4394; + int i4395; + int i4396; + int i4397; + int i4398; + int i4399; + int i4400; + int i4401; + int i4402; + int i4403; + int i4404; + int i4405; + int i4406; + int i4407; + int i4408; + int i4409; + int i4410; + int i4411; + int i4412; + int i4413; + int i4414; + int i4415; + int i4416; + int i4417; + int i4418; + int i4419; + int i4420; + int i4421; + int i4422; + int i4423; + int i4424; + int i4425; + int i4426; + int i4427; + int i4428; + int i4429; + int i4430; + int i4431; + int i4432; + int i4433; + int i4434; + int i4435; + int i4436; + int i4437; + int i4438; + int i4439; + int i4440; + int i4441; + int i4442; + int i4443; + int i4444; + int i4445; + int i4446; + int i4447; + int i4448; + int i4449; + int i4450; + int i4451; + int i4452; + int i4453; + int i4454; + int i4455; + int i4456; + int i4457; + int i4458; + int i4459; + int i4460; + int i4461; + int i4462; + int i4463; + int i4464; + int i4465; + int i4466; + int i4467; + int i4468; + int i4469; + int i4470; + int i4471; + int i4472; + int i4473; + int i4474; + int i4475; + int i4476; + int i4477; + int i4478; + int i4479; + int i4480; + int i4481; + int i4482; + int i4483; + int i4484; + int i4485; + int i4486; + int i4487; + int i4488; + int i4489; + int i4490; + int i4491; + int i4492; + int i4493; + int i4494; + int i4495; + int i4496; + int i4497; + int i4498; + int i4499; + int i4500; + int i4501; + int i4502; + int i4503; + int i4504; + int i4505; + int i4506; + int i4507; + int i4508; + int i4509; + int i4510; + int i4511; + int i4512; + int i4513; + int i4514; + int i4515; + int i4516; + int i4517; + int i4518; + int i4519; + int i4520; + int i4521; + int i4522; + int i4523; + int i4524; + int i4525; + int i4526; + int i4527; + int i4528; + int i4529; + int i4530; + int i4531; + int i4532; + int i4533; + int i4534; + int i4535; + int i4536; + int i4537; + int i4538; + int i4539; + int i4540; + int i4541; + int i4542; + int i4543; + int i4544; + int i4545; + int i4546; + int i4547; + int i4548; + int i4549; + int i4550; + int i4551; + int i4552; + int i4553; + int i4554; + int i4555; + int i4556; + int i4557; + int i4558; + int i4559; + int i4560; + int i4561; + int i4562; + int i4563; + int i4564; + int i4565; + int i4566; + int i4567; + int i4568; + int i4569; + int i4570; + int i4571; + int i4572; + int i4573; + int i4574; + int i4575; + int i4576; + int i4577; + int i4578; + int i4579; + int i4580; + int i4581; + int i4582; + int i4583; + int i4584; + int i4585; + int i4586; + int i4587; + int i4588; + int i4589; + int i4590; + int i4591; + int i4592; + int i4593; + int i4594; + int i4595; + int i4596; + int i4597; + int i4598; + int i4599; + int i4600; + int i4601; + int i4602; + int i4603; + int i4604; + int i4605; + int i4606; + int i4607; + int i4608; + int i4609; + int i4610; + int i4611; + int i4612; + int i4613; + int i4614; + int i4615; + int i4616; + int i4617; + int i4618; + int i4619; + int i4620; + int i4621; + int i4622; + int i4623; + int i4624; + int i4625; + int i4626; + int i4627; + int i4628; + int i4629; + int i4630; + int i4631; + int i4632; + int i4633; + int i4634; + int i4635; + int i4636; + int i4637; + int i4638; + int i4639; + int i4640; + int i4641; + int i4642; + int i4643; + int i4644; + int i4645; + int i4646; + int i4647; + int i4648; + int i4649; + int i4650; + int i4651; + int i4652; + int i4653; + int i4654; + int i4655; + int i4656; + int i4657; + int i4658; + int i4659; + int i4660; + int i4661; + int i4662; + int i4663; + int i4664; + int i4665; + int i4666; + int i4667; + int i4668; + int i4669; + int i4670; + int i4671; + int i4672; + int i4673; + int i4674; + int i4675; + int i4676; + int i4677; + int i4678; + int i4679; + int i4680; + int i4681; + int i4682; + int i4683; + int i4684; + int i4685; + int i4686; + int i4687; + int i4688; + int i4689; + int i4690; + int i4691; + int i4692; + int i4693; + int i4694; + int i4695; + int i4696; + int i4697; + int i4698; + int i4699; + int i4700; + int i4701; + int i4702; + int i4703; + int i4704; + int i4705; + int i4706; + int i4707; + int i4708; + int i4709; + int i4710; + int i4711; + int i4712; + int i4713; + int i4714; + int i4715; + int i4716; + int i4717; + int i4718; + int i4719; + int i4720; + int i4721; + int i4722; + int i4723; + int i4724; + int i4725; + int i4726; + int i4727; + int i4728; + int i4729; + int i4730; + int i4731; + int i4732; + int i4733; + int i4734; + int i4735; + int i4736; + int i4737; + int i4738; + int i4739; + int i4740; + int i4741; + int i4742; + int i4743; + int i4744; + int i4745; + int i4746; + int i4747; + int i4748; + int i4749; + int i4750; + int i4751; + int i4752; + int i4753; + int i4754; + int i4755; + int i4756; + int i4757; + int i4758; + int i4759; + int i4760; + int i4761; + int i4762; + int i4763; + int i4764; + int i4765; + int i4766; + int i4767; + int i4768; + int i4769; + int i4770; + int i4771; + int i4772; + int i4773; + int i4774; + int i4775; + int i4776; + int i4777; + int i4778; + int i4779; + int i4780; + int i4781; + int i4782; + int i4783; + int i4784; + int i4785; + int i4786; + int i4787; + int i4788; + int i4789; + int i4790; + int i4791; + int i4792; + int i4793; + int i4794; + int i4795; + int i4796; + int i4797; + int i4798; + int i4799; + int i4800; + int i4801; + int i4802; + int i4803; + int i4804; + int i4805; + int i4806; + int i4807; + int i4808; + int i4809; + int i4810; + int i4811; + int i4812; + int i4813; + int i4814; + int i4815; + int i4816; + int i4817; + int i4818; + int i4819; + int i4820; + int i4821; + int i4822; + int i4823; + int i4824; + int i4825; + int i4826; + int i4827; + int i4828; + int i4829; + int i4830; + int i4831; + int i4832; + int i4833; + int i4834; + int i4835; + int i4836; + int i4837; + int i4838; + int i4839; + int i4840; + int i4841; + int i4842; + int i4843; + int i4844; + int i4845; + int i4846; + int i4847; + int i4848; + int i4849; + int i4850; + int i4851; + int i4852; + int i4853; + int i4854; + int i4855; + int i4856; + int i4857; + int i4858; + int i4859; + int i4860; + int i4861; + int i4862; + int i4863; + int i4864; + int i4865; + int i4866; + int i4867; + int i4868; + int i4869; + int i4870; + int i4871; + int i4872; + int i4873; + int i4874; + int i4875; + int i4876; + int i4877; + int i4878; + int i4879; + int i4880; + int i4881; + int i4882; + int i4883; + int i4884; + int i4885; + int i4886; + int i4887; + int i4888; + int i4889; + int i4890; + int i4891; + int i4892; + int i4893; + int i4894; + int i4895; + int i4896; + int i4897; + int i4898; + int i4899; + int i4900; + int i4901; + int i4902; + int i4903; + int i4904; + int i4905; + int i4906; + int i4907; + int i4908; + int i4909; + int i4910; + int i4911; + int i4912; + int i4913; + int i4914; + int i4915; + int i4916; + int i4917; + int i4918; + int i4919; + int i4920; + int i4921; + int i4922; + int i4923; + int i4924; + int i4925; + int i4926; + int i4927; + int i4928; + int i4929; + int i4930; + int i4931; + int i4932; + int i4933; + int i4934; + int i4935; + int i4936; + int i4937; + int i4938; + int i4939; + int i4940; + int i4941; + int i4942; + int i4943; + int i4944; + int i4945; + int i4946; + int i4947; + int i4948; + int i4949; + int i4950; + int i4951; + int i4952; + int i4953; + int i4954; + int i4955; + int i4956; + int i4957; + int i4958; + int i4959; + int i4960; + int i4961; + int i4962; + int i4963; + int i4964; + int i4965; + int i4966; + int i4967; + int i4968; + int i4969; + int i4970; + int i4971; + int i4972; + int i4973; + int i4974; + int i4975; + int i4976; + int i4977; + int i4978; + int i4979; + int i4980; + int i4981; + int i4982; + int i4983; + int i4984; + int i4985; + int i4986; + int i4987; + int i4988; + int i4989; + int i4990; + int i4991; + int i4992; + int i4993; + int i4994; + int i4995; + int i4996; + int i4997; + int i4998; + int i4999; + int i5000; + int i5001; + int i5002; + int i5003; + int i5004; + int i5005; + int i5006; + int i5007; + int i5008; + int i5009; + int i5010; + int i5011; + int i5012; + int i5013; + int i5014; + int i5015; + int i5016; + int i5017; + int i5018; + int i5019; + int i5020; + int i5021; + int i5022; + int i5023; + int i5024; + int i5025; + int i5026; + int i5027; + int i5028; + int i5029; + int i5030; + int i5031; + int i5032; + int i5033; + int i5034; + int i5035; + int i5036; + int i5037; + int i5038; + int i5039; + int i5040; + int i5041; + int i5042; + int i5043; + int i5044; + int i5045; + int i5046; + int i5047; + int i5048; + int i5049; + int i5050; + int i5051; + int i5052; + int i5053; + int i5054; + int i5055; + int i5056; + int i5057; + int i5058; + int i5059; + int i5060; + int i5061; + int i5062; + int i5063; + int i5064; + int i5065; + int i5066; + int i5067; + int i5068; + int i5069; + int i5070; + int i5071; + int i5072; + int i5073; + int i5074; + int i5075; + int i5076; + int i5077; + int i5078; + int i5079; + int i5080; + int i5081; + int i5082; + int i5083; + int i5084; + int i5085; + int i5086; + int i5087; + int i5088; + int i5089; + int i5090; + int i5091; + int i5092; + int i5093; + int i5094; + int i5095; + int i5096; + int i5097; + int i5098; + int i5099; + int i5100; + int i5101; + int i5102; + int i5103; + int i5104; + int i5105; + int i5106; + int i5107; + int i5108; + int i5109; + int i5110; + int i5111; + int i5112; + int i5113; + int i5114; + int i5115; + int i5116; + int i5117; + int i5118; + int i5119; + int i5120; + int i5121; + int i5122; + int i5123; + int i5124; + int i5125; + int i5126; + int i5127; + int i5128; + int i5129; + int i5130; + int i5131; + int i5132; + int i5133; + int i5134; + int i5135; + int i5136; + int i5137; + int i5138; + int i5139; + int i5140; + int i5141; + int i5142; + int i5143; + int i5144; + int i5145; + int i5146; + int i5147; + int i5148; + int i5149; + int i5150; + int i5151; + int i5152; + int i5153; + int i5154; + int i5155; + int i5156; + int i5157; + int i5158; + int i5159; + int i5160; + int i5161; + int i5162; + int i5163; + int i5164; + int i5165; + int i5166; + int i5167; + int i5168; + int i5169; + int i5170; + int i5171; + int i5172; + int i5173; + int i5174; + int i5175; + int i5176; + int i5177; + int i5178; + int i5179; + int i5180; + int i5181; + int i5182; + int i5183; + int i5184; + int i5185; + int i5186; + int i5187; + int i5188; + int i5189; + int i5190; + int i5191; + int i5192; + int i5193; + int i5194; + int i5195; + int i5196; + int i5197; + int i5198; + int i5199; + int i5200; + int i5201; + int i5202; + int i5203; + int i5204; + int i5205; + int i5206; + int i5207; + int i5208; + int i5209; + int i5210; + int i5211; + int i5212; + int i5213; + int i5214; + int i5215; + int i5216; + int i5217; + int i5218; + int i5219; + int i5220; + int i5221; + int i5222; + int i5223; + int i5224; + int i5225; + int i5226; + int i5227; + int i5228; + int i5229; + int i5230; + int i5231; + int i5232; + int i5233; + int i5234; + int i5235; + int i5236; + int i5237; + int i5238; + int i5239; + int i5240; + int i5241; + int i5242; + int i5243; + int i5244; + int i5245; + int i5246; + int i5247; + int i5248; + int i5249; + int i5250; + int i5251; + int i5252; + int i5253; + int i5254; + int i5255; + int i5256; + int i5257; + int i5258; + int i5259; + int i5260; + int i5261; + int i5262; + int i5263; + int i5264; + int i5265; + int i5266; + int i5267; + int i5268; + int i5269; + int i5270; + int i5271; + int i5272; + int i5273; + int i5274; + int i5275; + int i5276; + int i5277; + int i5278; + int i5279; + int i5280; + int i5281; + int i5282; + int i5283; + int i5284; + int i5285; + int i5286; + int i5287; + int i5288; + int i5289; + int i5290; + int i5291; + int i5292; + int i5293; + int i5294; + int i5295; + int i5296; + int i5297; + int i5298; + int i5299; + int i5300; + int i5301; + int i5302; + int i5303; + int i5304; + int i5305; + int i5306; + int i5307; + int i5308; + int i5309; + int i5310; + int i5311; + int i5312; + int i5313; + int i5314; + int i5315; + int i5316; + int i5317; + int i5318; + int i5319; + int i5320; + int i5321; + int i5322; + int i5323; + int i5324; + int i5325; + int i5326; + int i5327; + int i5328; + int i5329; + int i5330; + int i5331; + int i5332; + int i5333; + int i5334; + int i5335; + int i5336; + int i5337; + int i5338; + int i5339; + int i5340; + int i5341; + int i5342; + int i5343; + int i5344; + int i5345; + int i5346; + int i5347; + int i5348; + int i5349; + int i5350; + int i5351; + int i5352; + int i5353; + int i5354; + int i5355; + int i5356; + int i5357; + int i5358; + int i5359; + int i5360; + int i5361; + int i5362; + int i5363; + int i5364; + int i5365; + int i5366; + int i5367; + int i5368; + int i5369; + int i5370; + int i5371; + int i5372; + int i5373; + int i5374; + int i5375; + int i5376; + int i5377; + int i5378; + int i5379; + int i5380; + int i5381; + int i5382; + int i5383; + int i5384; + int i5385; + int i5386; + int i5387; + int i5388; + int i5389; + int i5390; + int i5391; + int i5392; + int i5393; + int i5394; + int i5395; + int i5396; + int i5397; + int i5398; + int i5399; + int i5400; + int i5401; + int i5402; + int i5403; + int i5404; + int i5405; + int i5406; + int i5407; + int i5408; + int i5409; + int i5410; + int i5411; + int i5412; + int i5413; + int i5414; + int i5415; + int i5416; + int i5417; + int i5418; + int i5419; + int i5420; + int i5421; + int i5422; + int i5423; + int i5424; + int i5425; + int i5426; + int i5427; + int i5428; + int i5429; + int i5430; + int i5431; + int i5432; + int i5433; + int i5434; + int i5435; + int i5436; + int i5437; + int i5438; + int i5439; + int i5440; + int i5441; + int i5442; + int i5443; + int i5444; + int i5445; + int i5446; + int i5447; + int i5448; + int i5449; + int i5450; + int i5451; + int i5452; + int i5453; + int i5454; + int i5455; + int i5456; + int i5457; + int i5458; + int i5459; + int i5460; + int i5461; + int i5462; + int i5463; + int i5464; + int i5465; + int i5466; + int i5467; + int i5468; + int i5469; + int i5470; + int i5471; + int i5472; + int i5473; + int i5474; + int i5475; + int i5476; + int i5477; + int i5478; + int i5479; + int i5480; + int i5481; + int i5482; + int i5483; + int i5484; + int i5485; + int i5486; + int i5487; + int i5488; + int i5489; + int i5490; + int i5491; + int i5492; + int i5493; + int i5494; + int i5495; + int i5496; + int i5497; + int i5498; + int i5499; + int i5500; + int i5501; + int i5502; + int i5503; + int i5504; + int i5505; + int i5506; + int i5507; + int i5508; + int i5509; + int i5510; + int i5511; + int i5512; + int i5513; + int i5514; + int i5515; + int i5516; + int i5517; + int i5518; + int i5519; + int i5520; + int i5521; + int i5522; + int i5523; + int i5524; + int i5525; + int i5526; + int i5527; + int i5528; + int i5529; + int i5530; + int i5531; + int i5532; + int i5533; + int i5534; + int i5535; + int i5536; + int i5537; + int i5538; + int i5539; + int i5540; + int i5541; + int i5542; + int i5543; + int i5544; + int i5545; + int i5546; + int i5547; + int i5548; + int i5549; + int i5550; + int i5551; + int i5552; + int i5553; + int i5554; + int i5555; + int i5556; + int i5557; + int i5558; + int i5559; + int i5560; + int i5561; + int i5562; + int i5563; + int i5564; + int i5565; + int i5566; + int i5567; + int i5568; + int i5569; + int i5570; + int i5571; + int i5572; + int i5573; + int i5574; + int i5575; + int i5576; + int i5577; + int i5578; + int i5579; + int i5580; + int i5581; + int i5582; + int i5583; + int i5584; + int i5585; + int i5586; + int i5587; + int i5588; + int i5589; + int i5590; + int i5591; + int i5592; + int i5593; + int i5594; + int i5595; + int i5596; + int i5597; + int i5598; + int i5599; + int i5600; + int i5601; + int i5602; + int i5603; + int i5604; + int i5605; + int i5606; + int i5607; + int i5608; + int i5609; + int i5610; + int i5611; + int i5612; + int i5613; + int i5614; + int i5615; + int i5616; + int i5617; + int i5618; + int i5619; + int i5620; + int i5621; + int i5622; + int i5623; + int i5624; + int i5625; + int i5626; + int i5627; + int i5628; + int i5629; + int i5630; + int i5631; + int i5632; + int i5633; + int i5634; + int i5635; + int i5636; + int i5637; + int i5638; + int i5639; + int i5640; + int i5641; + int i5642; + int i5643; + int i5644; + int i5645; + int i5646; + int i5647; + int i5648; + int i5649; + int i5650; + int i5651; + int i5652; + int i5653; + int i5654; + int i5655; + int i5656; + int i5657; + int i5658; + int i5659; + int i5660; + int i5661; + int i5662; + int i5663; + int i5664; + int i5665; + int i5666; + int i5667; + int i5668; + int i5669; + int i5670; + int i5671; + int i5672; + int i5673; + int i5674; + int i5675; + int i5676; + int i5677; + int i5678; + int i5679; + int i5680; + int i5681; + int i5682; + int i5683; + int i5684; + int i5685; + int i5686; + int i5687; + int i5688; + int i5689; + int i5690; + int i5691; + int i5692; + int i5693; + int i5694; + int i5695; + int i5696; + int i5697; + int i5698; + int i5699; + int i5700; + int i5701; + int i5702; + int i5703; + int i5704; + int i5705; + int i5706; + int i5707; + int i5708; + int i5709; + int i5710; + int i5711; + int i5712; + int i5713; + int i5714; + int i5715; + int i5716; + int i5717; + int i5718; + int i5719; + int i5720; + int i5721; + int i5722; + int i5723; + int i5724; + int i5725; + int i5726; + int i5727; + int i5728; + int i5729; + int i5730; + int i5731; + int i5732; + int i5733; + int i5734; + int i5735; + int i5736; + int i5737; + int i5738; + int i5739; + int i5740; + int i5741; + int i5742; + int i5743; + int i5744; + int i5745; + int i5746; + int i5747; + int i5748; + int i5749; + int i5750; + int i5751; + int i5752; + int i5753; + int i5754; + int i5755; + int i5756; + int i5757; + int i5758; + int i5759; + int i5760; + int i5761; + int i5762; + int i5763; + int i5764; + int i5765; + int i5766; + int i5767; + int i5768; + int i5769; + int i5770; + int i5771; + int i5772; + int i5773; + int i5774; + int i5775; + int i5776; + int i5777; + int i5778; + int i5779; + int i5780; + int i5781; + int i5782; + int i5783; + int i5784; + int i5785; + int i5786; + int i5787; + int i5788; + int i5789; + int i5790; + int i5791; + int i5792; + int i5793; + int i5794; + int i5795; + int i5796; + int i5797; + int i5798; + int i5799; + int i5800; + int i5801; + int i5802; + int i5803; + int i5804; + int i5805; + int i5806; + int i5807; + int i5808; + int i5809; + int i5810; + int i5811; + int i5812; + int i5813; + int i5814; + int i5815; + int i5816; + int i5817; + int i5818; + int i5819; + int i5820; + int i5821; + int i5822; + int i5823; + int i5824; + int i5825; + int i5826; + int i5827; + int i5828; + int i5829; + int i5830; + int i5831; + int i5832; + int i5833; + int i5834; + int i5835; + int i5836; + int i5837; + int i5838; + int i5839; + int i5840; + int i5841; + int i5842; + int i5843; + int i5844; + int i5845; + int i5846; + int i5847; + int i5848; + int i5849; + int i5850; + int i5851; + int i5852; + int i5853; + int i5854; + int i5855; + int i5856; + int i5857; + int i5858; + int i5859; + int i5860; + int i5861; + int i5862; + int i5863; + int i5864; + int i5865; + int i5866; + int i5867; + int i5868; + int i5869; + int i5870; + int i5871; + int i5872; + int i5873; + int i5874; + int i5875; + int i5876; + int i5877; + int i5878; + int i5879; + int i5880; + int i5881; + int i5882; + int i5883; + int i5884; + int i5885; + int i5886; + int i5887; + int i5888; + int i5889; + int i5890; + int i5891; + int i5892; + int i5893; + int i5894; + int i5895; + int i5896; + int i5897; + int i5898; + int i5899; + int i5900; + int i5901; + int i5902; + int i5903; + int i5904; + int i5905; + int i5906; + int i5907; + int i5908; + int i5909; + int i5910; + int i5911; + int i5912; + int i5913; + int i5914; + int i5915; + int i5916; + int i5917; + int i5918; + int i5919; + int i5920; + int i5921; + int i5922; + int i5923; + int i5924; + int i5925; + int i5926; + int i5927; + int i5928; + int i5929; + int i5930; + int i5931; + int i5932; + int i5933; + int i5934; + int i5935; + int i5936; + int i5937; + int i5938; + int i5939; + int i5940; + int i5941; + int i5942; + int i5943; + int i5944; + int i5945; + int i5946; + int i5947; + int i5948; + int i5949; + int i5950; + int i5951; + int i5952; + int i5953; + int i5954; + int i5955; + int i5956; + int i5957; + int i5958; + int i5959; + int i5960; + int i5961; + int i5962; + int i5963; + int i5964; + int i5965; + int i5966; + int i5967; + int i5968; + int i5969; + int i5970; + int i5971; + int i5972; + int i5973; + int i5974; + int i5975; + int i5976; + int i5977; + int i5978; + int i5979; + int i5980; + int i5981; + int i5982; + int i5983; + int i5984; + int i5985; + int i5986; + int i5987; + int i5988; + int i5989; + int i5990; + int i5991; + int i5992; + int i5993; + int i5994; + int i5995; + int i5996; + int i5997; + int i5998; + int i5999; + int i6000; + int i6001; + int i6002; + int i6003; + int i6004; + int i6005; + int i6006; + int i6007; + int i6008; + int i6009; + int i6010; + int i6011; + int i6012; + int i6013; + int i6014; + int i6015; + int i6016; + int i6017; + int i6018; + int i6019; + int i6020; + int i6021; + int i6022; + int i6023; + int i6024; + int i6025; + int i6026; + int i6027; + int i6028; + int i6029; + int i6030; + int i6031; + int i6032; + int i6033; + int i6034; + int i6035; + int i6036; + int i6037; + int i6038; + int i6039; + int i6040; + int i6041; + int i6042; + int i6043; + int i6044; + int i6045; + int i6046; + int i6047; + int i6048; + int i6049; + int i6050; + int i6051; + int i6052; + int i6053; + int i6054; + int i6055; + int i6056; + int i6057; + int i6058; + int i6059; + int i6060; + int i6061; + int i6062; + int i6063; + int i6064; + int i6065; + int i6066; + int i6067; + int i6068; + int i6069; + int i6070; + int i6071; + int i6072; + int i6073; + int i6074; + int i6075; + int i6076; + int i6077; + int i6078; + int i6079; + int i6080; + int i6081; + int i6082; + int i6083; + int i6084; + int i6085; + int i6086; + int i6087; + int i6088; + int i6089; + int i6090; + int i6091; + int i6092; + int i6093; + int i6094; + int i6095; + int i6096; + int i6097; + int i6098; + int i6099; + int i6100; + int i6101; + int i6102; + int i6103; + int i6104; + int i6105; + int i6106; + int i6107; + int i6108; + int i6109; + int i6110; + int i6111; + int i6112; + int i6113; + int i6114; + int i6115; + int i6116; + int i6117; + int i6118; + int i6119; + int i6120; + int i6121; + int i6122; + int i6123; + int i6124; + int i6125; + int i6126; + int i6127; + int i6128; + int i6129; + int i6130; + int i6131; + int i6132; + int i6133; + int i6134; + int i6135; + int i6136; + int i6137; + int i6138; + int i6139; + int i6140; + int i6141; + int i6142; + int i6143; + int i6144; + int i6145; + int i6146; + int i6147; + int i6148; + int i6149; + int i6150; + int i6151; + int i6152; + int i6153; + int i6154; + int i6155; + int i6156; + int i6157; + int i6158; + int i6159; + int i6160; + int i6161; + int i6162; + int i6163; + int i6164; + int i6165; + int i6166; + int i6167; + int i6168; + int i6169; + int i6170; + int i6171; + int i6172; + int i6173; + int i6174; + int i6175; + int i6176; + int i6177; + int i6178; + int i6179; + int i6180; + int i6181; + int i6182; + int i6183; + int i6184; + int i6185; + int i6186; + int i6187; + int i6188; + int i6189; + int i6190; + int i6191; + int i6192; + int i6193; + int i6194; + int i6195; + int i6196; + int i6197; + int i6198; + int i6199; + int i6200; + int i6201; + int i6202; + int i6203; + int i6204; + int i6205; + int i6206; + int i6207; + int i6208; + int i6209; + int i6210; + int i6211; + int i6212; + int i6213; + int i6214; + int i6215; + int i6216; + int i6217; + int i6218; + int i6219; + int i6220; + int i6221; + int i6222; + int i6223; + int i6224; + int i6225; + int i6226; + int i6227; + int i6228; + int i6229; + int i6230; + int i6231; + int i6232; + int i6233; + int i6234; + int i6235; + int i6236; + int i6237; + int i6238; + int i6239; + int i6240; + int i6241; + int i6242; + int i6243; + int i6244; + int i6245; + int i6246; + int i6247; + int i6248; + int i6249; + int i6250; + int i6251; + int i6252; + int i6253; + int i6254; + int i6255; + int i6256; + int i6257; + int i6258; + int i6259; + int i6260; + int i6261; + int i6262; + int i6263; + int i6264; + int i6265; + int i6266; + int i6267; + int i6268; + int i6269; + int i6270; + int i6271; + int i6272; + int i6273; + int i6274; + int i6275; + int i6276; + int i6277; + int i6278; + int i6279; + int i6280; + int i6281; + int i6282; + int i6283; + int i6284; + int i6285; + int i6286; + int i6287; + int i6288; + int i6289; + int i6290; + int i6291; + int i6292; + int i6293; + int i6294; + int i6295; + int i6296; + int i6297; + int i6298; + int i6299; + int i6300; + int i6301; + int i6302; + int i6303; + int i6304; + int i6305; + int i6306; + int i6307; + int i6308; + int i6309; + int i6310; + int i6311; + int i6312; + int i6313; + int i6314; + int i6315; + int i6316; + int i6317; + int i6318; + int i6319; + int i6320; + int i6321; + int i6322; + int i6323; + int i6324; + int i6325; + int i6326; + int i6327; + int i6328; + int i6329; + int i6330; + int i6331; + int i6332; + int i6333; + int i6334; + int i6335; + int i6336; + int i6337; + int i6338; + int i6339; + int i6340; + int i6341; + int i6342; + int i6343; + int i6344; + int i6345; + int i6346; + int i6347; + int i6348; + int i6349; + int i6350; + int i6351; + int i6352; + int i6353; + int i6354; + int i6355; + int i6356; + int i6357; + int i6358; + int i6359; + int i6360; + int i6361; + int i6362; + int i6363; + int i6364; + int i6365; + int i6366; + int i6367; + int i6368; + int i6369; + int i6370; + int i6371; + int i6372; + int i6373; + int i6374; + int i6375; + int i6376; + int i6377; + int i6378; + int i6379; + int i6380; + int i6381; + int i6382; + int i6383; + int i6384; + int i6385; + int i6386; + int i6387; + int i6388; + int i6389; + int i6390; + int i6391; + int i6392; + int i6393; + int i6394; + int i6395; + int i6396; + int i6397; + int i6398; + int i6399; + int i6400; + int i6401; + int i6402; + int i6403; + int i6404; + int i6405; + int i6406; + int i6407; + int i6408; + int i6409; + int i6410; + int i6411; + int i6412; + int i6413; + int i6414; + int i6415; + int i6416; + int i6417; + int i6418; + int i6419; + int i6420; + int i6421; + int i6422; + int i6423; + int i6424; + int i6425; + int i6426; + int i6427; + int i6428; + int i6429; + int i6430; + int i6431; + int i6432; + int i6433; + int i6434; + int i6435; + int i6436; + int i6437; + int i6438; + int i6439; + int i6440; + int i6441; + int i6442; + int i6443; + int i6444; + int i6445; + int i6446; + int i6447; + int i6448; + int i6449; + int i6450; + int i6451; + int i6452; + int i6453; + int i6454; + int i6455; + int i6456; + int i6457; + int i6458; + int i6459; + int i6460; + int i6461; + int i6462; + int i6463; + int i6464; + int i6465; + int i6466; + int i6467; + int i6468; + int i6469; + int i6470; + int i6471; + int i6472; + int i6473; + int i6474; + int i6475; + int i6476; + int i6477; + int i6478; + int i6479; + int i6480; + int i6481; + int i6482; + int i6483; + int i6484; + int i6485; + int i6486; + int i6487; + int i6488; + int i6489; + int i6490; + int i6491; + int i6492; + int i6493; + int i6494; + int i6495; + int i6496; + int i6497; + int i6498; + int i6499; + int i6500; + int i6501; + int i6502; + int i6503; + int i6504; + int i6505; + int i6506; + int i6507; + int i6508; + int i6509; + int i6510; + int i6511; + int i6512; + int i6513; + int i6514; + int i6515; + int i6516; + int i6517; + int i6518; + int i6519; + int i6520; + int i6521; + int i6522; + int i6523; + int i6524; + int i6525; + int i6526; + int i6527; + int i6528; + int i6529; + int i6530; + int i6531; + int i6532; + int i6533; + int i6534; + int i6535; + int i6536; + int i6537; + int i6538; + int i6539; + int i6540; + int i6541; + int i6542; + int i6543; + int i6544; + int i6545; + int i6546; + int i6547; + int i6548; + int i6549; + int i6550; + int i6551; + int i6552; + int i6553; + int i6554; + int i6555; + int i6556; + int i6557; + int i6558; + int i6559; + int i6560; + int i6561; + int i6562; + int i6563; + int i6564; + int i6565; + int i6566; + int i6567; + int i6568; + int i6569; + int i6570; + int i6571; + int i6572; + int i6573; + int i6574; + int i6575; + int i6576; + int i6577; + int i6578; + int i6579; + int i6580; + int i6581; + int i6582; + int i6583; + int i6584; + int i6585; + int i6586; + int i6587; + int i6588; + int i6589; + int i6590; + int i6591; + int i6592; + int i6593; + int i6594; + int i6595; + int i6596; + int i6597; + int i6598; + int i6599; + int i6600; + int i6601; + int i6602; + int i6603; + int i6604; + int i6605; + int i6606; + int i6607; + int i6608; + int i6609; + int i6610; + int i6611; + int i6612; + int i6613; + int i6614; + int i6615; + int i6616; + int i6617; + int i6618; + int i6619; + int i6620; + int i6621; + int i6622; + int i6623; + int i6624; + int i6625; + int i6626; + int i6627; + int i6628; + int i6629; + int i6630; + int i6631; + int i6632; + int i6633; + int i6634; + int i6635; + int i6636; + int i6637; + int i6638; + int i6639; + int i6640; + int i6641; + int i6642; + int i6643; + int i6644; + int i6645; + int i6646; + int i6647; + int i6648; + int i6649; + int i6650; + int i6651; + int i6652; + int i6653; + int i6654; + int i6655; + int i6656; + int i6657; + int i6658; + int i6659; + int i6660; + int i6661; + int i6662; + int i6663; + int i6664; + int i6665; + int i6666; + int i6667; + int i6668; + int i6669; + int i6670; + int i6671; + int i6672; + int i6673; + int i6674; + int i6675; + int i6676; + int i6677; + int i6678; + int i6679; + int i6680; + int i6681; + int i6682; + int i6683; + int i6684; + int i6685; + int i6686; + int i6687; + int i6688; + int i6689; + int i6690; + int i6691; + int i6692; + int i6693; + int i6694; + int i6695; + int i6696; + int i6697; + int i6698; + int i6699; + int i6700; + int i6701; + int i6702; + int i6703; + int i6704; + int i6705; + int i6706; + int i6707; + int i6708; + int i6709; + int i6710; + int i6711; + int i6712; + int i6713; + int i6714; + int i6715; + int i6716; + int i6717; + int i6718; + int i6719; + int i6720; + int i6721; + int i6722; + int i6723; + int i6724; + int i6725; + int i6726; + int i6727; + int i6728; + int i6729; + int i6730; + int i6731; + int i6732; + int i6733; + int i6734; + int i6735; + int i6736; + int i6737; + int i6738; + int i6739; + int i6740; + int i6741; + int i6742; + int i6743; + int i6744; + int i6745; + int i6746; + int i6747; + int i6748; + int i6749; + int i6750; + int i6751; + int i6752; + int i6753; + int i6754; + int i6755; + int i6756; + int i6757; + int i6758; + int i6759; + int i6760; + int i6761; + int i6762; + int i6763; + int i6764; + int i6765; + int i6766; + int i6767; + int i6768; + int i6769; + int i6770; + int i6771; + int i6772; + int i6773; + int i6774; + int i6775; + int i6776; + int i6777; + int i6778; + int i6779; + int i6780; + int i6781; + int i6782; + int i6783; + int i6784; + int i6785; + int i6786; + int i6787; + int i6788; + int i6789; + int i6790; + int i6791; + int i6792; + int i6793; + int i6794; + int i6795; + int i6796; + int i6797; + int i6798; + int i6799; + int i6800; + int i6801; + int i6802; + int i6803; + int i6804; + int i6805; + int i6806; + int i6807; + int i6808; + int i6809; + int i6810; + int i6811; + int i6812; + int i6813; + int i6814; + int i6815; + int i6816; + int i6817; + int i6818; + int i6819; + int i6820; + int i6821; + int i6822; + int i6823; + int i6824; + int i6825; + int i6826; + int i6827; + int i6828; + int i6829; + int i6830; + int i6831; + int i6832; + int i6833; + int i6834; + int i6835; + int i6836; + int i6837; + int i6838; + int i6839; + int i6840; + int i6841; + int i6842; + int i6843; + int i6844; + int i6845; + int i6846; + int i6847; + int i6848; + int i6849; + int i6850; + int i6851; + int i6852; + int i6853; + int i6854; + int i6855; + int i6856; + int i6857; + int i6858; + int i6859; + int i6860; + int i6861; + int i6862; + int i6863; + int i6864; + int i6865; + int i6866; + int i6867; + int i6868; + int i6869; + int i6870; + int i6871; + int i6872; + int i6873; + int i6874; + int i6875; + int i6876; + int i6877; + int i6878; + int i6879; + int i6880; + int i6881; + int i6882; + int i6883; + int i6884; + int i6885; + int i6886; + int i6887; + int i6888; + int i6889; + int i6890; + int i6891; + int i6892; + int i6893; + int i6894; + int i6895; + int i6896; + int i6897; + int i6898; + int i6899; + int i6900; + int i6901; + int i6902; + int i6903; + int i6904; + int i6905; + int i6906; + int i6907; + int i6908; + int i6909; + int i6910; + int i6911; + int i6912; + int i6913; + int i6914; + int i6915; + int i6916; + int i6917; + int i6918; + int i6919; + int i6920; + int i6921; + int i6922; + int i6923; + int i6924; + int i6925; + int i6926; + int i6927; + int i6928; + int i6929; + int i6930; + int i6931; + int i6932; + int i6933; + int i6934; + int i6935; + int i6936; + int i6937; + int i6938; + int i6939; + int i6940; + int i6941; + int i6942; + int i6943; + int i6944; + int i6945; + int i6946; + int i6947; + int i6948; + int i6949; + int i6950; + int i6951; + int i6952; + int i6953; + int i6954; + int i6955; + int i6956; + int i6957; + int i6958; + int i6959; + int i6960; + int i6961; + int i6962; + int i6963; + int i6964; + int i6965; + int i6966; + int i6967; + int i6968; + int i6969; + int i6970; + int i6971; + int i6972; + int i6973; + int i6974; + int i6975; + int i6976; + int i6977; + int i6978; + int i6979; + int i6980; + int i6981; + int i6982; + int i6983; + int i6984; + int i6985; + int i6986; + int i6987; + int i6988; + int i6989; + int i6990; + int i6991; + int i6992; + int i6993; + int i6994; + int i6995; + int i6996; + int i6997; + int i6998; + int i6999; + int i7000; + int i7001; + int i7002; + int i7003; + int i7004; + int i7005; + int i7006; + int i7007; + int i7008; + int i7009; + int i7010; + int i7011; + int i7012; + int i7013; + int i7014; + int i7015; + int i7016; + int i7017; + int i7018; + int i7019; + int i7020; + int i7021; + int i7022; + int i7023; + int i7024; + int i7025; + int i7026; + int i7027; + int i7028; + int i7029; + int i7030; + int i7031; + int i7032; + int i7033; + int i7034; + int i7035; + int i7036; + int i7037; + int i7038; + int i7039; + int i7040; + int i7041; + int i7042; + int i7043; + int i7044; + int i7045; + int i7046; + int i7047; + int i7048; + int i7049; + int i7050; + int i7051; + int i7052; + int i7053; + int i7054; + int i7055; + int i7056; + int i7057; + int i7058; + int i7059; + int i7060; + int i7061; + int i7062; + int i7063; + int i7064; + int i7065; + int i7066; + int i7067; + int i7068; + int i7069; + int i7070; + int i7071; + int i7072; + int i7073; + int i7074; + int i7075; + int i7076; + int i7077; + int i7078; + int i7079; + int i7080; + int i7081; + int i7082; + int i7083; + int i7084; + int i7085; + int i7086; + int i7087; + int i7088; + int i7089; + int i7090; + int i7091; + int i7092; + int i7093; + int i7094; + int i7095; + int i7096; + int i7097; + int i7098; + int i7099; + int i7100; + int i7101; + int i7102; + int i7103; + int i7104; + int i7105; + int i7106; + int i7107; + int i7108; + int i7109; + int i7110; + int i7111; + int i7112; + int i7113; + int i7114; + int i7115; + int i7116; + int i7117; + int i7118; + int i7119; + int i7120; + int i7121; + int i7122; + int i7123; + int i7124; + int i7125; + int i7126; + int i7127; + int i7128; + int i7129; + int i7130; + int i7131; + int i7132; + int i7133; + int i7134; + int i7135; + int i7136; + int i7137; + int i7138; + int i7139; + int i7140; + int i7141; + int i7142; + int i7143; + int i7144; + int i7145; + int i7146; + int i7147; + int i7148; + int i7149; + int i7150; + int i7151; + int i7152; + int i7153; + int i7154; + int i7155; + int i7156; + int i7157; + int i7158; + int i7159; + int i7160; + int i7161; + int i7162; + int i7163; + int i7164; + int i7165; + int i7166; + int i7167; + int i7168; + int i7169; + int i7170; + int i7171; + int i7172; + int i7173; + int i7174; + int i7175; + int i7176; + int i7177; + int i7178; + int i7179; + int i7180; + int i7181; + int i7182; + int i7183; + int i7184; + int i7185; + int i7186; + int i7187; + int i7188; + int i7189; + int i7190; + int i7191; + int i7192; + int i7193; + int i7194; + int i7195; + int i7196; + int i7197; + int i7198; + int i7199; + int i7200; + int i7201; + int i7202; + int i7203; + int i7204; + int i7205; + int i7206; + int i7207; + int i7208; + int i7209; + int i7210; + int i7211; + int i7212; + int i7213; + int i7214; + int i7215; + int i7216; + int i7217; + int i7218; + int i7219; + int i7220; + int i7221; + int i7222; + int i7223; + int i7224; + int i7225; + int i7226; + int i7227; + int i7228; + int i7229; + int i7230; + int i7231; + int i7232; + int i7233; + int i7234; + int i7235; + int i7236; + int i7237; + int i7238; + int i7239; + int i7240; + int i7241; + int i7242; + int i7243; + int i7244; + int i7245; + int i7246; + int i7247; + int i7248; + int i7249; + int i7250; + int i7251; + int i7252; + int i7253; + int i7254; + int i7255; + int i7256; + int i7257; + int i7258; + int i7259; + int i7260; + int i7261; + int i7262; + int i7263; + int i7264; + int i7265; + int i7266; + int i7267; + int i7268; + int i7269; + int i7270; + int i7271; + int i7272; + int i7273; + int i7274; + int i7275; + int i7276; + int i7277; + int i7278; + int i7279; + int i7280; + int i7281; + int i7282; + int i7283; + int i7284; + int i7285; + int i7286; + int i7287; + int i7288; + int i7289; + int i7290; + int i7291; + int i7292; + int i7293; + int i7294; + int i7295; + int i7296; + int i7297; + int i7298; + int i7299; + int i7300; + int i7301; + int i7302; + int i7303; + int i7304; + int i7305; + int i7306; + int i7307; + int i7308; + int i7309; + int i7310; + int i7311; + int i7312; + int i7313; + int i7314; + int i7315; + int i7316; + int i7317; + int i7318; + int i7319; + int i7320; + int i7321; + int i7322; + int i7323; + int i7324; + int i7325; + int i7326; + int i7327; + int i7328; + int i7329; + int i7330; + int i7331; + int i7332; + int i7333; + int i7334; + int i7335; + int i7336; + int i7337; + int i7338; + int i7339; + int i7340; + int i7341; + int i7342; + int i7343; + int i7344; + int i7345; + int i7346; + int i7347; + int i7348; + int i7349; + int i7350; + int i7351; + int i7352; + int i7353; + int i7354; + int i7355; + int i7356; + int i7357; + int i7358; + int i7359; + int i7360; + int i7361; + int i7362; + int i7363; + int i7364; + int i7365; + int i7366; + int i7367; + int i7368; + int i7369; + int i7370; + int i7371; + int i7372; + int i7373; + int i7374; + int i7375; + int i7376; + int i7377; + int i7378; + int i7379; + int i7380; + int i7381; + int i7382; + int i7383; + int i7384; + int i7385; + int i7386; + int i7387; + int i7388; + int i7389; + int i7390; + int i7391; + int i7392; + int i7393; + int i7394; + int i7395; + int i7396; + int i7397; + int i7398; + int i7399; + int i7400; + int i7401; + int i7402; + int i7403; + int i7404; + int i7405; + int i7406; + int i7407; + int i7408; + int i7409; + int i7410; + int i7411; + int i7412; + int i7413; + int i7414; + int i7415; + int i7416; + int i7417; + int i7418; + int i7419; + int i7420; + int i7421; + int i7422; + int i7423; + int i7424; + int i7425; + int i7426; + int i7427; + int i7428; + int i7429; + int i7430; + int i7431; + int i7432; + int i7433; + int i7434; + int i7435; + int i7436; + int i7437; + int i7438; + int i7439; + int i7440; + int i7441; + int i7442; + int i7443; + int i7444; + int i7445; + int i7446; + int i7447; + int i7448; + int i7449; + int i7450; + int i7451; + int i7452; + int i7453; + int i7454; + int i7455; + int i7456; + int i7457; + int i7458; + int i7459; + int i7460; + int i7461; + int i7462; + int i7463; + int i7464; + int i7465; + int i7466; + int i7467; + int i7468; + int i7469; + int i7470; + int i7471; + int i7472; + int i7473; + int i7474; + int i7475; + int i7476; + int i7477; + int i7478; + int i7479; + int i7480; + int i7481; + int i7482; + int i7483; + int i7484; + int i7485; + int i7486; + int i7487; + int i7488; + int i7489; + int i7490; + int i7491; + int i7492; + int i7493; + int i7494; + int i7495; + int i7496; + int i7497; + int i7498; + int i7499; + int i7500; + int i7501; + int i7502; + int i7503; + int i7504; + int i7505; + int i7506; + int i7507; + int i7508; + int i7509; + int i7510; + int i7511; + int i7512; + int i7513; + int i7514; + int i7515; + int i7516; + int i7517; + int i7518; + int i7519; + int i7520; + int i7521; + int i7522; + int i7523; + int i7524; + int i7525; + int i7526; + int i7527; + int i7528; + int i7529; + int i7530; + int i7531; + int i7532; + int i7533; + int i7534; + int i7535; + int i7536; + int i7537; + int i7538; + int i7539; + int i7540; + int i7541; + int i7542; + int i7543; + int i7544; + int i7545; + int i7546; + int i7547; + int i7548; + int i7549; + int i7550; + int i7551; + int i7552; + int i7553; + int i7554; + int i7555; + int i7556; + int i7557; + int i7558; + int i7559; + int i7560; + int i7561; + int i7562; + int i7563; + int i7564; + int i7565; + int i7566; + int i7567; + int i7568; + int i7569; + int i7570; + int i7571; + int i7572; + int i7573; + int i7574; + int i7575; + int i7576; + int i7577; + int i7578; + int i7579; + int i7580; + int i7581; + int i7582; + int i7583; + int i7584; + int i7585; + int i7586; + int i7587; + int i7588; + int i7589; + int i7590; + int i7591; + int i7592; + int i7593; + int i7594; + int i7595; + int i7596; + int i7597; + int i7598; + int i7599; + int i7600; + int i7601; + int i7602; + int i7603; + int i7604; + int i7605; + int i7606; + int i7607; + int i7608; + int i7609; + int i7610; + int i7611; + int i7612; + int i7613; + int i7614; + int i7615; + int i7616; + int i7617; + int i7618; + int i7619; + int i7620; + int i7621; + int i7622; + int i7623; + int i7624; + int i7625; + int i7626; + int i7627; + int i7628; + int i7629; + int i7630; + int i7631; + int i7632; + int i7633; + int i7634; + int i7635; + int i7636; + int i7637; + int i7638; + int i7639; + int i7640; + int i7641; + int i7642; + int i7643; + int i7644; + int i7645; + int i7646; + int i7647; + int i7648; + int i7649; + int i7650; + int i7651; + int i7652; + int i7653; + int i7654; + int i7655; + int i7656; + int i7657; + int i7658; + int i7659; + int i7660; + int i7661; + int i7662; + int i7663; + int i7664; + int i7665; + int i7666; + int i7667; + int i7668; + int i7669; + int i7670; + int i7671; + int i7672; + int i7673; + int i7674; + int i7675; + int i7676; + int i7677; + int i7678; + int i7679; + int i7680; + int i7681; + int i7682; + int i7683; + int i7684; + int i7685; + int i7686; + int i7687; + int i7688; + int i7689; + int i7690; + int i7691; + int i7692; + int i7693; + int i7694; + int i7695; + int i7696; + int i7697; + int i7698; + int i7699; + int i7700; + int i7701; + int i7702; + int i7703; + int i7704; + int i7705; + int i7706; + int i7707; + int i7708; + int i7709; + int i7710; + int i7711; + int i7712; + int i7713; + int i7714; + int i7715; + int i7716; + int i7717; + int i7718; + int i7719; + int i7720; + int i7721; + int i7722; + int i7723; + int i7724; + int i7725; + int i7726; + int i7727; + int i7728; + int i7729; + int i7730; + int i7731; + int i7732; + int i7733; + int i7734; + int i7735; + int i7736; + int i7737; + int i7738; + int i7739; + int i7740; + int i7741; + int i7742; + int i7743; + int i7744; + int i7745; + int i7746; + int i7747; + int i7748; + int i7749; + int i7750; + int i7751; + int i7752; + int i7753; + int i7754; + int i7755; + int i7756; + int i7757; + int i7758; + int i7759; + int i7760; + int i7761; + int i7762; + int i7763; + int i7764; + int i7765; + int i7766; + int i7767; + int i7768; + int i7769; + int i7770; + int i7771; + int i7772; + int i7773; + int i7774; + int i7775; + int i7776; + int i7777; + int i7778; + int i7779; + int i7780; + int i7781; + int i7782; + int i7783; + int i7784; + int i7785; + int i7786; + int i7787; + int i7788; + int i7789; + int i7790; + int i7791; + int i7792; + int i7793; + int i7794; + int i7795; + int i7796; + int i7797; + int i7798; + int i7799; + int i7800; + int i7801; + int i7802; + int i7803; + int i7804; + int i7805; + int i7806; + int i7807; + int i7808; + int i7809; + int i7810; + int i7811; + int i7812; + int i7813; + int i7814; + int i7815; + int i7816; + int i7817; + int i7818; + int i7819; + int i7820; + int i7821; + int i7822; + int i7823; + int i7824; + int i7825; + int i7826; + int i7827; + int i7828; + int i7829; + int i7830; + int i7831; + int i7832; + int i7833; + int i7834; + int i7835; + int i7836; + int i7837; + int i7838; + int i7839; + int i7840; + int i7841; + int i7842; + int i7843; + int i7844; + int i7845; + int i7846; + int i7847; + int i7848; + int i7849; + int i7850; + int i7851; + int i7852; + int i7853; + int i7854; + int i7855; + int i7856; + int i7857; + int i7858; + int i7859; + int i7860; + int i7861; + int i7862; + int i7863; + int i7864; + int i7865; + int i7866; + int i7867; + int i7868; + int i7869; + int i7870; + int i7871; + int i7872; + int i7873; + int i7874; + int i7875; + int i7876; + int i7877; + int i7878; + int i7879; + int i7880; + int i7881; + int i7882; + int i7883; + int i7884; + int i7885; + int i7886; + int i7887; + int i7888; + int i7889; + int i7890; + int i7891; + int i7892; + int i7893; + int i7894; + int i7895; + int i7896; + int i7897; + int i7898; + int i7899; + int i7900; + int i7901; + int i7902; + int i7903; + int i7904; + int i7905; + int i7906; + int i7907; + int i7908; + int i7909; + int i7910; + int i7911; + int i7912; + int i7913; + int i7914; + int i7915; + int i7916; + int i7917; + int i7918; + int i7919; + int i7920; + int i7921; + int i7922; + int i7923; + int i7924; + int i7925; + int i7926; + int i7927; + int i7928; + int i7929; + int i7930; + int i7931; + int i7932; + int i7933; + int i7934; + int i7935; + int i7936; + int i7937; + int i7938; + int i7939; + int i7940; + int i7941; + int i7942; + int i7943; + int i7944; + int i7945; + int i7946; + int i7947; + int i7948; + int i7949; + int i7950; + int i7951; + int i7952; + int i7953; + int i7954; + int i7955; + int i7956; + int i7957; + int i7958; + int i7959; + int i7960; + int i7961; + int i7962; + int i7963; + int i7964; + int i7965; + int i7966; + int i7967; + int i7968; + int i7969; + int i7970; + int i7971; + int i7972; + int i7973; + int i7974; + int i7975; + int i7976; + int i7977; + int i7978; + int i7979; + int i7980; + int i7981; + int i7982; + int i7983; + int i7984; + int i7985; + int i7986; + int i7987; + int i7988; + int i7989; + int i7990; + int i7991; + int i7992; + int i7993; + int i7994; + int i7995; + int i7996; + int i7997; + int i7998; + int i7999; + int i8000; + int i8001; + int i8002; + int i8003; + int i8004; + int i8005; + int i8006; + int i8007; + int i8008; + int i8009; + int i8010; + int i8011; + int i8012; + int i8013; + int i8014; + int i8015; + int i8016; + int i8017; + int i8018; + int i8019; + int i8020; + int i8021; + int i8022; + int i8023; + int i8024; + int i8025; + int i8026; + int i8027; + int i8028; + int i8029; + int i8030; + int i8031; + int i8032; + int i8033; + int i8034; + int i8035; + int i8036; + int i8037; + int i8038; + int i8039; + int i8040; + int i8041; + int i8042; + int i8043; + int i8044; + int i8045; + int i8046; + int i8047; + int i8048; + int i8049; + int i8050; + int i8051; + int i8052; + int i8053; + int i8054; + int i8055; + int i8056; + int i8057; + int i8058; + int i8059; + int i8060; + int i8061; + int i8062; + int i8063; + int i8064; + int i8065; + int i8066; + int i8067; + int i8068; + int i8069; + int i8070; + int i8071; + int i8072; + int i8073; + int i8074; + int i8075; + int i8076; + int i8077; + int i8078; + int i8079; + int i8080; + int i8081; + int i8082; + int i8083; + int i8084; + int i8085; + int i8086; + int i8087; + int i8088; + int i8089; + int i8090; + int i8091; + int i8092; + int i8093; + int i8094; + int i8095; + int i8096; + int i8097; + int i8098; + int i8099; + int i8100; + int i8101; + int i8102; + int i8103; + int i8104; + int i8105; + int i8106; + int i8107; + int i8108; + int i8109; + int i8110; + int i8111; + int i8112; + int i8113; + int i8114; + int i8115; + int i8116; + int i8117; + int i8118; + int i8119; + int i8120; + int i8121; + int i8122; + int i8123; + int i8124; + int i8125; + int i8126; + int i8127; + int i8128; + int i8129; + int i8130; + int i8131; + int i8132; + int i8133; + int i8134; + int i8135; + int i8136; + int i8137; + int i8138; + int i8139; + int i8140; + int i8141; + int i8142; + int i8143; + int i8144; + int i8145; + int i8146; + int i8147; + int i8148; + int i8149; + int i8150; + int i8151; + int i8152; + int i8153; + int i8154; + int i8155; + int i8156; + int i8157; + int i8158; + int i8159; + int i8160; + int i8161; + int i8162; + int i8163; + int i8164; + int i8165; + int i8166; + int i8167; + int i8168; + int i8169; + int i8170; + int i8171; + int i8172; + int i8173; + int i8174; + int i8175; + int i8176; + int i8177; + int i8178; + int i8179; + int i8180; + int i8181; + int i8182; + int i8183; + int i8184; + int i8185; + int i8186; + int i8187; + int i8188; + int i8189; + int i8190; + int i8191; + int i8192; + int i8193; + int i8194; + int i8195; + int i8196; + int i8197; + int i8198; + int i8199; + int i8200; + int i8201; + int i8202; + int i8203; + int i8204; + int i8205; + int i8206; + int i8207; + int i8208; + int i8209; + int i8210; + int i8211; + int i8212; + int i8213; + int i8214; + int i8215; + int i8216; + int i8217; + int i8218; + int i8219; + int i8220; + int i8221; + int i8222; + int i8223; + int i8224; + int i8225; + int i8226; + int i8227; + int i8228; + int i8229; + int i8230; + int i8231; + int i8232; + int i8233; + int i8234; + int i8235; + int i8236; + int i8237; + int i8238; + int i8239; + int i8240; + int i8241; + int i8242; + int i8243; + int i8244; + int i8245; + int i8246; + int i8247; + int i8248; + int i8249; + int i8250; + int i8251; + int i8252; + int i8253; + int i8254; + int i8255; + int i8256; + int i8257; + int i8258; + int i8259; + int i8260; + int i8261; + int i8262; + int i8263; + int i8264; + int i8265; + int i8266; + int i8267; + int i8268; + int i8269; + int i8270; + int i8271; + int i8272; + int i8273; + int i8274; + int i8275; + int i8276; + int i8277; + int i8278; + int i8279; + int i8280; + int i8281; + int i8282; + int i8283; + int i8284; + int i8285; + int i8286; + int i8287; + int i8288; + int i8289; + int i8290; + int i8291; + int i8292; + int i8293; + int i8294; + int i8295; + int i8296; + int i8297; + int i8298; + int i8299; + int i8300; + int i8301; + int i8302; + int i8303; + int i8304; + int i8305; + int i8306; + int i8307; + int i8308; + int i8309; + int i8310; + int i8311; + int i8312; + int i8313; + int i8314; + int i8315; + int i8316; + int i8317; + int i8318; + int i8319; + int i8320; + int i8321; + int i8322; + int i8323; + int i8324; + int i8325; + int i8326; + int i8327; + int i8328; + int i8329; + int i8330; + int i8331; + int i8332; + int i8333; + int i8334; + int i8335; + int i8336; + int i8337; + int i8338; + int i8339; + int i8340; + int i8341; + int i8342; + int i8343; + int i8344; + int i8345; + int i8346; + int i8347; + int i8348; + int i8349; + int i8350; + int i8351; + int i8352; + int i8353; + int i8354; + int i8355; + int i8356; + int i8357; + int i8358; + int i8359; + int i8360; + int i8361; + int i8362; + int i8363; + int i8364; + int i8365; + int i8366; + int i8367; + int i8368; + int i8369; + int i8370; + int i8371; + int i8372; + int i8373; + int i8374; + int i8375; + int i8376; + int i8377; + int i8378; + int i8379; + int i8380; + int i8381; + int i8382; + int i8383; + int i8384; + int i8385; + int i8386; + int i8387; + int i8388; + int i8389; + int i8390; + int i8391; + int i8392; + int i8393; + int i8394; + int i8395; + int i8396; + int i8397; + int i8398; + int i8399; + int i8400; + int i8401; + int i8402; + int i8403; + int i8404; + int i8405; + int i8406; + int i8407; + int i8408; + int i8409; + int i8410; + int i8411; + int i8412; + int i8413; + int i8414; + int i8415; + int i8416; + int i8417; + int i8418; + int i8419; + int i8420; + int i8421; + int i8422; + int i8423; + int i8424; + int i8425; + int i8426; + int i8427; + int i8428; + int i8429; + int i8430; + int i8431; + int i8432; + int i8433; + int i8434; + int i8435; + int i8436; + int i8437; + int i8438; + int i8439; + int i8440; + int i8441; + int i8442; + int i8443; + int i8444; + int i8445; + int i8446; + int i8447; + int i8448; + int i8449; + int i8450; + int i8451; + int i8452; + int i8453; + int i8454; + int i8455; + int i8456; + int i8457; + int i8458; + int i8459; + int i8460; + int i8461; + int i8462; + int i8463; + int i8464; + int i8465; + int i8466; + int i8467; + int i8468; + int i8469; + int i8470; + int i8471; + int i8472; + int i8473; + int i8474; + int i8475; + int i8476; + int i8477; + int i8478; + int i8479; + int i8480; + int i8481; + int i8482; + int i8483; + int i8484; + int i8485; + int i8486; + int i8487; + int i8488; + int i8489; + int i8490; + int i8491; + int i8492; + int i8493; + int i8494; + int i8495; + int i8496; + int i8497; + int i8498; + int i8499; + int i8500; + int i8501; + int i8502; + int i8503; + int i8504; + int i8505; + int i8506; + int i8507; + int i8508; + int i8509; + int i8510; + int i8511; + int i8512; + int i8513; + int i8514; + int i8515; + int i8516; + int i8517; + int i8518; + int i8519; + int i8520; + int i8521; + int i8522; + int i8523; + int i8524; + int i8525; + int i8526; + int i8527; + int i8528; + int i8529; + int i8530; + int i8531; + int i8532; + int i8533; + int i8534; + int i8535; + int i8536; + int i8537; + int i8538; + int i8539; + int i8540; + int i8541; + int i8542; + int i8543; + int i8544; + int i8545; + int i8546; + int i8547; + int i8548; + int i8549; + int i8550; + int i8551; + int i8552; + int i8553; + int i8554; + int i8555; + int i8556; + int i8557; + int i8558; + int i8559; + int i8560; + int i8561; + int i8562; + int i8563; + int i8564; + int i8565; + int i8566; + int i8567; + int i8568; + int i8569; + int i8570; + int i8571; + int i8572; + int i8573; + int i8574; + int i8575; + int i8576; + int i8577; + int i8578; + int i8579; + int i8580; + int i8581; + int i8582; + int i8583; + int i8584; + int i8585; + int i8586; + int i8587; + int i8588; + int i8589; + int i8590; + int i8591; + int i8592; + int i8593; + int i8594; + int i8595; + int i8596; + int i8597; + int i8598; + int i8599; + int i8600; + int i8601; + int i8602; + int i8603; + int i8604; + int i8605; + int i8606; + int i8607; + int i8608; + int i8609; + int i8610; + int i8611; + int i8612; + int i8613; + int i8614; + int i8615; + int i8616; + int i8617; + int i8618; + int i8619; + int i8620; + int i8621; + int i8622; + int i8623; + int i8624; + int i8625; + int i8626; + int i8627; + int i8628; + int i8629; + int i8630; + int i8631; + int i8632; + int i8633; + int i8634; + int i8635; + int i8636; + int i8637; + int i8638; + int i8639; + int i8640; + int i8641; + int i8642; + int i8643; + int i8644; + int i8645; + int i8646; + int i8647; + int i8648; + int i8649; + int i8650; + int i8651; + int i8652; + int i8653; + int i8654; + int i8655; + int i8656; + int i8657; + int i8658; + int i8659; + int i8660; + int i8661; + int i8662; + int i8663; + int i8664; + int i8665; + int i8666; + int i8667; + int i8668; + int i8669; + int i8670; + int i8671; + int i8672; + int i8673; + int i8674; + int i8675; + int i8676; + int i8677; + int i8678; + int i8679; + int i8680; + int i8681; + int i8682; + int i8683; + int i8684; + int i8685; + int i8686; + int i8687; + int i8688; + int i8689; + int i8690; + int i8691; + int i8692; + int i8693; + int i8694; + int i8695; + int i8696; + int i8697; + int i8698; + int i8699; + int i8700; + int i8701; + int i8702; + int i8703; + int i8704; + int i8705; + int i8706; + int i8707; + int i8708; + int i8709; + int i8710; + int i8711; + int i8712; + int i8713; + int i8714; + int i8715; + int i8716; + int i8717; + int i8718; + int i8719; + int i8720; + int i8721; + int i8722; + int i8723; + int i8724; + int i8725; + int i8726; + int i8727; + int i8728; + int i8729; + int i8730; + int i8731; + int i8732; + int i8733; + int i8734; + int i8735; + int i8736; + int i8737; + int i8738; + int i8739; + int i8740; + int i8741; + int i8742; + int i8743; + int i8744; + int i8745; + int i8746; + int i8747; + int i8748; + int i8749; + int i8750; + int i8751; + int i8752; + int i8753; + int i8754; + int i8755; + int i8756; + int i8757; + int i8758; + int i8759; + int i8760; + int i8761; + int i8762; + int i8763; + int i8764; + int i8765; + int i8766; + int i8767; + int i8768; + int i8769; + int i8770; + int i8771; + int i8772; + int i8773; + int i8774; + int i8775; + int i8776; + int i8777; + int i8778; + int i8779; + int i8780; + int i8781; + int i8782; + int i8783; + int i8784; + int i8785; + int i8786; + int i8787; + int i8788; + int i8789; + int i8790; + int i8791; + int i8792; + int i8793; + int i8794; + int i8795; + int i8796; + int i8797; + int i8798; + int i8799; + int i8800; + int i8801; + int i8802; + int i8803; + int i8804; + int i8805; + int i8806; + int i8807; + int i8808; + int i8809; + int i8810; + int i8811; + int i8812; + int i8813; + int i8814; + int i8815; + int i8816; + int i8817; + int i8818; + int i8819; + int i8820; + int i8821; + int i8822; + int i8823; + int i8824; + int i8825; + int i8826; + int i8827; + int i8828; + int i8829; + int i8830; + int i8831; + int i8832; + int i8833; + int i8834; + int i8835; + int i8836; + int i8837; + int i8838; + int i8839; + int i8840; + int i8841; + int i8842; + int i8843; + int i8844; + int i8845; + int i8846; + int i8847; + int i8848; + int i8849; + int i8850; + int i8851; + int i8852; + int i8853; + int i8854; + int i8855; + int i8856; + int i8857; + int i8858; + int i8859; + int i8860; + int i8861; + int i8862; + int i8863; + int i8864; + int i8865; + int i8866; + int i8867; + int i8868; + int i8869; + int i8870; + int i8871; + int i8872; + int i8873; + int i8874; + int i8875; + int i8876; + int i8877; + int i8878; + int i8879; + int i8880; + int i8881; + int i8882; + int i8883; + int i8884; + int i8885; + int i8886; + int i8887; + int i8888; + int i8889; + int i8890; + int i8891; + int i8892; + int i8893; + int i8894; + int i8895; + int i8896; + int i8897; + int i8898; + int i8899; + int i8900; + int i8901; + int i8902; + int i8903; + int i8904; + int i8905; + int i8906; + int i8907; + int i8908; + int i8909; + int i8910; + int i8911; + int i8912; + int i8913; + int i8914; + int i8915; + int i8916; + int i8917; + int i8918; + int i8919; + int i8920; + int i8921; + int i8922; + int i8923; + int i8924; + int i8925; + int i8926; + int i8927; + int i8928; + int i8929; + int i8930; + int i8931; + int i8932; + int i8933; + int i8934; + int i8935; + int i8936; + int i8937; + int i8938; + int i8939; + int i8940; + int i8941; + int i8942; + int i8943; + int i8944; + int i8945; + int i8946; + int i8947; + int i8948; + int i8949; + int i8950; + int i8951; + int i8952; + int i8953; + int i8954; + int i8955; + int i8956; + int i8957; + int i8958; + int i8959; + int i8960; + int i8961; + int i8962; + int i8963; + int i8964; + int i8965; + int i8966; + int i8967; + int i8968; + int i8969; + int i8970; + int i8971; + int i8972; + int i8973; + int i8974; + int i8975; + int i8976; + int i8977; + int i8978; + int i8979; + int i8980; + int i8981; + int i8982; + int i8983; + int i8984; + int i8985; + int i8986; + int i8987; + int i8988; + int i8989; + int i8990; + int i8991; + int i8992; + int i8993; + int i8994; + int i8995; + int i8996; + int i8997; + int i8998; + int i8999; + int i9000; + int i9001; + int i9002; + int i9003; + int i9004; + int i9005; + int i9006; + int i9007; + int i9008; + int i9009; + int i9010; + int i9011; + int i9012; + int i9013; + int i9014; + int i9015; + int i9016; + int i9017; + int i9018; + int i9019; + int i9020; + int i9021; + int i9022; + int i9023; + int i9024; + int i9025; + int i9026; + int i9027; + int i9028; + int i9029; + int i9030; + int i9031; + int i9032; + int i9033; + int i9034; + int i9035; + int i9036; + int i9037; + int i9038; + int i9039; + int i9040; + int i9041; + int i9042; + int i9043; + int i9044; + int i9045; + int i9046; + int i9047; + int i9048; + int i9049; + int i9050; + int i9051; + int i9052; + int i9053; + int i9054; + int i9055; + int i9056; + int i9057; + int i9058; + int i9059; + int i9060; + int i9061; + int i9062; + int i9063; + int i9064; + int i9065; + int i9066; + int i9067; + int i9068; + int i9069; + int i9070; + int i9071; + int i9072; + int i9073; + int i9074; + int i9075; + int i9076; + int i9077; + int i9078; + int i9079; + int i9080; + int i9081; + int i9082; + int i9083; + int i9084; + int i9085; + int i9086; + int i9087; + int i9088; + int i9089; + int i9090; + int i9091; + int i9092; + int i9093; + int i9094; + int i9095; + int i9096; + int i9097; + int i9098; + int i9099; + int i9100; + int i9101; + int i9102; + int i9103; + int i9104; + int i9105; + int i9106; + int i9107; + int i9108; + int i9109; + int i9110; + int i9111; + int i9112; + int i9113; + int i9114; + int i9115; + int i9116; + int i9117; + int i9118; + int i9119; + int i9120; + int i9121; + int i9122; + int i9123; + int i9124; + int i9125; + int i9126; + int i9127; + int i9128; + int i9129; + int i9130; + int i9131; + int i9132; + int i9133; + int i9134; + int i9135; + int i9136; + int i9137; + int i9138; + int i9139; + int i9140; + int i9141; + int i9142; + int i9143; + int i9144; + int i9145; + int i9146; + int i9147; + int i9148; + int i9149; + int i9150; + int i9151; + int i9152; + int i9153; + int i9154; + int i9155; + int i9156; + int i9157; + int i9158; + int i9159; + int i9160; + int i9161; + int i9162; + int i9163; + int i9164; + int i9165; + int i9166; + int i9167; + int i9168; + int i9169; + int i9170; + int i9171; + int i9172; + int i9173; + int i9174; + int i9175; + int i9176; + int i9177; + int i9178; + int i9179; + int i9180; + int i9181; + int i9182; + int i9183; + int i9184; + int i9185; + int i9186; + int i9187; + int i9188; + int i9189; + int i9190; + int i9191; + int i9192; + int i9193; + int i9194; + int i9195; + int i9196; + int i9197; + int i9198; + int i9199; + int i9200; + int i9201; + int i9202; + int i9203; + int i9204; + int i9205; + int i9206; + int i9207; + int i9208; + int i9209; + int i9210; + int i9211; + int i9212; + int i9213; + int i9214; + int i9215; + int i9216; + int i9217; + int i9218; + int i9219; + int i9220; + int i9221; + int i9222; + int i9223; + int i9224; + int i9225; + int i9226; + int i9227; + int i9228; + int i9229; + int i9230; + int i9231; + int i9232; + int i9233; + int i9234; + int i9235; + int i9236; + int i9237; + int i9238; + int i9239; + int i9240; + int i9241; + int i9242; + int i9243; + int i9244; + int i9245; + int i9246; + int i9247; + int i9248; + int i9249; + int i9250; + int i9251; + int i9252; + int i9253; + int i9254; + int i9255; + int i9256; + int i9257; + int i9258; + int i9259; + int i9260; + int i9261; + int i9262; + int i9263; + int i9264; + int i9265; + int i9266; + int i9267; + int i9268; + int i9269; + int i9270; + int i9271; + int i9272; + int i9273; + int i9274; + int i9275; + int i9276; + int i9277; + int i9278; + int i9279; + int i9280; + int i9281; + int i9282; + int i9283; + int i9284; + int i9285; + int i9286; + int i9287; + int i9288; + int i9289; + int i9290; + int i9291; + int i9292; + int i9293; + int i9294; + int i9295; + int i9296; + int i9297; + int i9298; + int i9299; + int i9300; + int i9301; + int i9302; + int i9303; + int i9304; + int i9305; + int i9306; + int i9307; + int i9308; + int i9309; + int i9310; + int i9311; + int i9312; + int i9313; + int i9314; + int i9315; + int i9316; + int i9317; + int i9318; + int i9319; + int i9320; + int i9321; + int i9322; + int i9323; + int i9324; + int i9325; + int i9326; + int i9327; + int i9328; + int i9329; + int i9330; + int i9331; + int i9332; + int i9333; + int i9334; + int i9335; + int i9336; + int i9337; + int i9338; + int i9339; + int i9340; + int i9341; + int i9342; + int i9343; + int i9344; + int i9345; + int i9346; + int i9347; + int i9348; + int i9349; + int i9350; + int i9351; + int i9352; + int i9353; + int i9354; + int i9355; + int i9356; + int i9357; + int i9358; + int i9359; + int i9360; + int i9361; + int i9362; + int i9363; + int i9364; + int i9365; + int i9366; + int i9367; + int i9368; + int i9369; + int i9370; + int i9371; + int i9372; + int i9373; + int i9374; + int i9375; + int i9376; + int i9377; + int i9378; + int i9379; + int i9380; + int i9381; + int i9382; + int i9383; + int i9384; + int i9385; + int i9386; + int i9387; + int i9388; + int i9389; + int i9390; + int i9391; + int i9392; + int i9393; + int i9394; + int i9395; + int i9396; + int i9397; + int i9398; + int i9399; + int i9400; + int i9401; + int i9402; + int i9403; + int i9404; + int i9405; + int i9406; + int i9407; + int i9408; + int i9409; + int i9410; + int i9411; + int i9412; + int i9413; + int i9414; + int i9415; + int i9416; + int i9417; + int i9418; + int i9419; + int i9420; + int i9421; + int i9422; + int i9423; + int i9424; + int i9425; + int i9426; + int i9427; + int i9428; + int i9429; + int i9430; + int i9431; + int i9432; + int i9433; + int i9434; + int i9435; + int i9436; + int i9437; + int i9438; + int i9439; + int i9440; + int i9441; + int i9442; + int i9443; + int i9444; + int i9445; + int i9446; + int i9447; + int i9448; + int i9449; + int i9450; + int i9451; + int i9452; + int i9453; + int i9454; + int i9455; + int i9456; + int i9457; + int i9458; + int i9459; + int i9460; + int i9461; + int i9462; + int i9463; + int i9464; + int i9465; + int i9466; + int i9467; + int i9468; + int i9469; + int i9470; + int i9471; + int i9472; + int i9473; + int i9474; + int i9475; + int i9476; + int i9477; + int i9478; + int i9479; + int i9480; + int i9481; + int i9482; + int i9483; + int i9484; + int i9485; + int i9486; + int i9487; + int i9488; + int i9489; + int i9490; + int i9491; + int i9492; + int i9493; + int i9494; + int i9495; + int i9496; + int i9497; + int i9498; + int i9499; + int i9500; + int i9501; + int i9502; + int i9503; + int i9504; + int i9505; + int i9506; + int i9507; + int i9508; + int i9509; + int i9510; + int i9511; + int i9512; + int i9513; + int i9514; + int i9515; + int i9516; + int i9517; + int i9518; + int i9519; + int i9520; + int i9521; + int i9522; + int i9523; + int i9524; + int i9525; + int i9526; + int i9527; + int i9528; + int i9529; + int i9530; + int i9531; + int i9532; + int i9533; + int i9534; + int i9535; + int i9536; + int i9537; + int i9538; + int i9539; + int i9540; + int i9541; + int i9542; + int i9543; + int i9544; + int i9545; + int i9546; + int i9547; + int i9548; + int i9549; + int i9550; + int i9551; + int i9552; + int i9553; + int i9554; + int i9555; + int i9556; + int i9557; + int i9558; + int i9559; + int i9560; + int i9561; + int i9562; + int i9563; + int i9564; + int i9565; + int i9566; + int i9567; + int i9568; + int i9569; + int i9570; + int i9571; + int i9572; + int i9573; + int i9574; + int i9575; + int i9576; + int i9577; + int i9578; + int i9579; + int i9580; + int i9581; + int i9582; + int i9583; + int i9584; + int i9585; + int i9586; + int i9587; + int i9588; + int i9589; + int i9590; + int i9591; + int i9592; + int i9593; + int i9594; + int i9595; + int i9596; + int i9597; + int i9598; + int i9599; + int i9600; + int i9601; + int i9602; + int i9603; + int i9604; + int i9605; + int i9606; + int i9607; + int i9608; + int i9609; + int i9610; + int i9611; + int i9612; + int i9613; + int i9614; + int i9615; + int i9616; + int i9617; + int i9618; + int i9619; + int i9620; + int i9621; + int i9622; + int i9623; + int i9624; + int i9625; + int i9626; + int i9627; + int i9628; + int i9629; + int i9630; + int i9631; + int i9632; + int i9633; + int i9634; + int i9635; + int i9636; + int i9637; + int i9638; + int i9639; + int i9640; + int i9641; + int i9642; + int i9643; + int i9644; + int i9645; + int i9646; + int i9647; + int i9648; + int i9649; + int i9650; + int i9651; + int i9652; + int i9653; + int i9654; + int i9655; + int i9656; + int i9657; + int i9658; + int i9659; + int i9660; + int i9661; + int i9662; + int i9663; + int i9664; + int i9665; + int i9666; + int i9667; + int i9668; + int i9669; + int i9670; + int i9671; + int i9672; + int i9673; + int i9674; + int i9675; + int i9676; + int i9677; + int i9678; + int i9679; + int i9680; + int i9681; + int i9682; + int i9683; + int i9684; + int i9685; + int i9686; + int i9687; + int i9688; + int i9689; + int i9690; + int i9691; + int i9692; + int i9693; + int i9694; + int i9695; + int i9696; + int i9697; + int i9698; + int i9699; + int i9700; + int i9701; + int i9702; + int i9703; + int i9704; + int i9705; + int i9706; + int i9707; + int i9708; + int i9709; + int i9710; + int i9711; + int i9712; + int i9713; + int i9714; + int i9715; + int i9716; + int i9717; + int i9718; + int i9719; + int i9720; + int i9721; + int i9722; + int i9723; + int i9724; + int i9725; + int i9726; + int i9727; + int i9728; + int i9729; + int i9730; + int i9731; + int i9732; + int i9733; + int i9734; + int i9735; + int i9736; + int i9737; + int i9738; + int i9739; + int i9740; + int i9741; + int i9742; + int i9743; + int i9744; + int i9745; + int i9746; + int i9747; + int i9748; + int i9749; + int i9750; + int i9751; + int i9752; + int i9753; + int i9754; + int i9755; + int i9756; + int i9757; + int i9758; + int i9759; + int i9760; + int i9761; + int i9762; + int i9763; + int i9764; + int i9765; + int i9766; + int i9767; + int i9768; + int i9769; + int i9770; + int i9771; + int i9772; + int i9773; + int i9774; + int i9775; + int i9776; + int i9777; + int i9778; + int i9779; + int i9780; + int i9781; + int i9782; + int i9783; + int i9784; + int i9785; + int i9786; + int i9787; + int i9788; + int i9789; + int i9790; + int i9791; + int i9792; + int i9793; + int i9794; + int i9795; + int i9796; + int i9797; + int i9798; + int i9799; + int i9800; + int i9801; + int i9802; + int i9803; + int i9804; + int i9805; + int i9806; + int i9807; + int i9808; + int i9809; + int i9810; + int i9811; + int i9812; + int i9813; + int i9814; + int i9815; + int i9816; + int i9817; + int i9818; + int i9819; + int i9820; + int i9821; + int i9822; + int i9823; + int i9824; + int i9825; + int i9826; + int i9827; + int i9828; + int i9829; + int i9830; + int i9831; + int i9832; + int i9833; + int i9834; + int i9835; + int i9836; + int i9837; + int i9838; + int i9839; + int i9840; + int i9841; + int i9842; + int i9843; + int i9844; + int i9845; + int i9846; + int i9847; + int i9848; + int i9849; + int i9850; + int i9851; + int i9852; + int i9853; + int i9854; + int i9855; + int i9856; + int i9857; + int i9858; + int i9859; + int i9860; + int i9861; + int i9862; + int i9863; + int i9864; + int i9865; + int i9866; + int i9867; + int i9868; + int i9869; + int i9870; + int i9871; + int i9872; + int i9873; + int i9874; + int i9875; + int i9876; + int i9877; + int i9878; + int i9879; + int i9880; + int i9881; + int i9882; + int i9883; + int i9884; + int i9885; + int i9886; + int i9887; + int i9888; + int i9889; + int i9890; + int i9891; + int i9892; + int i9893; + int i9894; + int i9895; + int i9896; + int i9897; + int i9898; + int i9899; + int i9900; + int i9901; + int i9902; + int i9903; + int i9904; + int i9905; + int i9906; + int i9907; + int i9908; + int i9909; + int i9910; + int i9911; + int i9912; + int i9913; + int i9914; + int i9915; + int i9916; + int i9917; + int i9918; + int i9919; + int i9920; + int i9921; + int i9922; + int i9923; + int i9924; + int i9925; + int i9926; + int i9927; + int i9928; + int i9929; + int i9930; + int i9931; + int i9932; + int i9933; + int i9934; + int i9935; + int i9936; + int i9937; + int i9938; + int i9939; + int i9940; + int i9941; + int i9942; + int i9943; + int i9944; + int i9945; + int i9946; + int i9947; + int i9948; + int i9949; + int i9950; + int i9951; + int i9952; + int i9953; + int i9954; + int i9955; + int i9956; + int i9957; + int i9958; + int i9959; + int i9960; + int i9961; + int i9962; + int i9963; + int i9964; + int i9965; + int i9966; + int i9967; + int i9968; + int i9969; + int i9970; + int i9971; + int i9972; + int i9973; + int i9974; + int i9975; + int i9976; + int i9977; + int i9978; + int i9979; + int i9980; + int i9981; + int i9982; + int i9983; + int i9984; + int i9985; + int i9986; + int i9987; + int i9988; + int i9989; + int i9990; + int i9991; + int i9992; + int i9993; + int i9994; + int i9995; + int i9996; + int i9997; + int i9998; + int i9999; + int i10000; + int i10001; + int i10002; + int i10003; + int i10004; + int i10005; + int i10006; + int i10007; + int i10008; + int i10009; + int i10010; + int i10011; + int i10012; + int i10013; + int i10014; + int i10015; + int i10016; + int i10017; + int i10018; + int i10019; + int i10020; + int i10021; + int i10022; + int i10023; + int i10024; + int i10025; + int i10026; + int i10027; + int i10028; + int i10029; + int i10030; + int i10031; + int i10032; + int i10033; + int i10034; + int i10035; + int i10036; + int i10037; + int i10038; + int i10039; + int i10040; + int i10041; + int i10042; + int i10043; + int i10044; + int i10045; + int i10046; + int i10047; + int i10048; + int i10049; + int i10050; + int i10051; + int i10052; + int i10053; + int i10054; + int i10055; + int i10056; + int i10057; + int i10058; + int i10059; + int i10060; + int i10061; + int i10062; + int i10063; + int i10064; + int i10065; + int i10066; + int i10067; + int i10068; + int i10069; + int i10070; + int i10071; + int i10072; + int i10073; + int i10074; + int i10075; + int i10076; + int i10077; + int i10078; + int i10079; + int i10080; + int i10081; + int i10082; + int i10083; + int i10084; + int i10085; + int i10086; + int i10087; + int i10088; + int i10089; + int i10090; + int i10091; + int i10092; + int i10093; + int i10094; + int i10095; + int i10096; + int i10097; + int i10098; + int i10099; + int i10100; + int i10101; + int i10102; + int i10103; + int i10104; + int i10105; + int i10106; + int i10107; + int i10108; + int i10109; + int i10110; + int i10111; + int i10112; + int i10113; + int i10114; + int i10115; + int i10116; + int i10117; + int i10118; + int i10119; + int i10120; + int i10121; + int i10122; + int i10123; + int i10124; + int i10125; + int i10126; + int i10127; + int i10128; + int i10129; + int i10130; + int i10131; + int i10132; + int i10133; + int i10134; + int i10135; + int i10136; + int i10137; + int i10138; + int i10139; + int i10140; + int i10141; + int i10142; + int i10143; + int i10144; + int i10145; + int i10146; + int i10147; + int i10148; + int i10149; + int i10150; + int i10151; + int i10152; + int i10153; + int i10154; + int i10155; + int i10156; + int i10157; + int i10158; + int i10159; + int i10160; + int i10161; + int i10162; + int i10163; + int i10164; + int i10165; + int i10166; + int i10167; + int i10168; + int i10169; + int i10170; + int i10171; + int i10172; + int i10173; + int i10174; + int i10175; + int i10176; + int i10177; + int i10178; + int i10179; + int i10180; + int i10181; + int i10182; + int i10183; + int i10184; + int i10185; + int i10186; + int i10187; + int i10188; + int i10189; + int i10190; + int i10191; + int i10192; + int i10193; + int i10194; + int i10195; + int i10196; + int i10197; + int i10198; + int i10199; + int i10200; + int i10201; + int i10202; + int i10203; + int i10204; + int i10205; + int i10206; + int i10207; + int i10208; + int i10209; + int i10210; + int i10211; + int i10212; + int i10213; + int i10214; + int i10215; + int i10216; + int i10217; + int i10218; + int i10219; + int i10220; + int i10221; + int i10222; + int i10223; + int i10224; + int i10225; + int i10226; + int i10227; + int i10228; + int i10229; + int i10230; + int i10231; + int i10232; + int i10233; + int i10234; + int i10235; + int i10236; + int i10237; + int i10238; + int i10239; + int i10240; + int i10241; + int i10242; + int i10243; + int i10244; + int i10245; + int i10246; + int i10247; + int i10248; + int i10249; + int i10250; + int i10251; + int i10252; + int i10253; + int i10254; + int i10255; + int i10256; + int i10257; + int i10258; + int i10259; + int i10260; + int i10261; + int i10262; + int i10263; + int i10264; + int i10265; + int i10266; + int i10267; + int i10268; + int i10269; + int i10270; + int i10271; + int i10272; + int i10273; + int i10274; + int i10275; + int i10276; + int i10277; + int i10278; + int i10279; + int i10280; + int i10281; + int i10282; + int i10283; + int i10284; + int i10285; + int i10286; + int i10287; + int i10288; + int i10289; + int i10290; + int i10291; + int i10292; + int i10293; + int i10294; + int i10295; + int i10296; + int i10297; + int i10298; + int i10299; + int i10300; + int i10301; + int i10302; + int i10303; + int i10304; + int i10305; + int i10306; + int i10307; + int i10308; + int i10309; + int i10310; + int i10311; + int i10312; + int i10313; + int i10314; + int i10315; + int i10316; + int i10317; + int i10318; + int i10319; + int i10320; + int i10321; + int i10322; + int i10323; + int i10324; + int i10325; + int i10326; + int i10327; + int i10328; + int i10329; + int i10330; + int i10331; + int i10332; + int i10333; + int i10334; + int i10335; + int i10336; + int i10337; + int i10338; + int i10339; + int i10340; + int i10341; + int i10342; + int i10343; + int i10344; + int i10345; + int i10346; + int i10347; + int i10348; + int i10349; + int i10350; + int i10351; + int i10352; + int i10353; + int i10354; + int i10355; + int i10356; + int i10357; + int i10358; + int i10359; + int i10360; + int i10361; + int i10362; + int i10363; + int i10364; + int i10365; + int i10366; + int i10367; + int i10368; + int i10369; + int i10370; + int i10371; + int i10372; + int i10373; + int i10374; + int i10375; + int i10376; + int i10377; + int i10378; + int i10379; + int i10380; + int i10381; + int i10382; + int i10383; + int i10384; + int i10385; + int i10386; + int i10387; + int i10388; + int i10389; + int i10390; + int i10391; + int i10392; + int i10393; + int i10394; + int i10395; + int i10396; + int i10397; + int i10398; + int i10399; + int i10400; + int i10401; + int i10402; + int i10403; + int i10404; + int i10405; + int i10406; + int i10407; + int i10408; + int i10409; + int i10410; + int i10411; + int i10412; + int i10413; + int i10414; + int i10415; + int i10416; + int i10417; + int i10418; + int i10419; + int i10420; + int i10421; + int i10422; + int i10423; + int i10424; + int i10425; + int i10426; + int i10427; + int i10428; + int i10429; + int i10430; + int i10431; + int i10432; + int i10433; + int i10434; + int i10435; + int i10436; + int i10437; + int i10438; + int i10439; + int i10440; + int i10441; + int i10442; + int i10443; + int i10444; + int i10445; + int i10446; + int i10447; + int i10448; + int i10449; + int i10450; + int i10451; + int i10452; + int i10453; + int i10454; + int i10455; + int i10456; + int i10457; + int i10458; + int i10459; + int i10460; + int i10461; + int i10462; + int i10463; + int i10464; + int i10465; + int i10466; + int i10467; + int i10468; + int i10469; + int i10470; + int i10471; + int i10472; + int i10473; + int i10474; + int i10475; + int i10476; + int i10477; + int i10478; + int i10479; + int i10480; + int i10481; + int i10482; + int i10483; + int i10484; + int i10485; + int i10486; + int i10487; + int i10488; + int i10489; + int i10490; + int i10491; + int i10492; + int i10493; + int i10494; + int i10495; + int i10496; + int i10497; + int i10498; + int i10499; + int i10500; + int i10501; + int i10502; + int i10503; + int i10504; + int i10505; + int i10506; + int i10507; + int i10508; + int i10509; + int i10510; + int i10511; + int i10512; + int i10513; + int i10514; + int i10515; + int i10516; + int i10517; + int i10518; + int i10519; + int i10520; + int i10521; + int i10522; + int i10523; + int i10524; + int i10525; + int i10526; + int i10527; + int i10528; + int i10529; + int i10530; + int i10531; + int i10532; + int i10533; + int i10534; + int i10535; + int i10536; + int i10537; + int i10538; + int i10539; + int i10540; + int i10541; + int i10542; + int i10543; + int i10544; + int i10545; + int i10546; + int i10547; + int i10548; + int i10549; + int i10550; + int i10551; + int i10552; + int i10553; + int i10554; + int i10555; + int i10556; + int i10557; + int i10558; + int i10559; + int i10560; + int i10561; + int i10562; + int i10563; + int i10564; + int i10565; + int i10566; + int i10567; + int i10568; + int i10569; + int i10570; + int i10571; + int i10572; + int i10573; + int i10574; + int i10575; + int i10576; + int i10577; + int i10578; + int i10579; + int i10580; + int i10581; + int i10582; + int i10583; + int i10584; + int i10585; + int i10586; + int i10587; + int i10588; + int i10589; + int i10590; + int i10591; + int i10592; + int i10593; + int i10594; + int i10595; + int i10596; + int i10597; + int i10598; + int i10599; + int i10600; + int i10601; + int i10602; + int i10603; + int i10604; + int i10605; + int i10606; + int i10607; + int i10608; + int i10609; + int i10610; + int i10611; + int i10612; + int i10613; + int i10614; + int i10615; + int i10616; + int i10617; + int i10618; + int i10619; + int i10620; + int i10621; + int i10622; + int i10623; + int i10624; + int i10625; + int i10626; + int i10627; + int i10628; + int i10629; + int i10630; + int i10631; + int i10632; + int i10633; + int i10634; + int i10635; + int i10636; + int i10637; + int i10638; + int i10639; + int i10640; + int i10641; + int i10642; + int i10643; + int i10644; + int i10645; + int i10646; + int i10647; + int i10648; + int i10649; + int i10650; + int i10651; + int i10652; + int i10653; + int i10654; + int i10655; + int i10656; + int i10657; + int i10658; + int i10659; + int i10660; + int i10661; + int i10662; + int i10663; + int i10664; + int i10665; + int i10666; + int i10667; + int i10668; + int i10669; + int i10670; + int i10671; + int i10672; + int i10673; + int i10674; + int i10675; + int i10676; + int i10677; + int i10678; + int i10679; + int i10680; + int i10681; + int i10682; + int i10683; + int i10684; + int i10685; + int i10686; + int i10687; + int i10688; + int i10689; + int i10690; + int i10691; + int i10692; + int i10693; + int i10694; + int i10695; + int i10696; + int i10697; + int i10698; + int i10699; + int i10700; + int i10701; + int i10702; + int i10703; + int i10704; + int i10705; + int i10706; + int i10707; + int i10708; + int i10709; + int i10710; + int i10711; + int i10712; + int i10713; + int i10714; + int i10715; + int i10716; + int i10717; + int i10718; + int i10719; + int i10720; + int i10721; + int i10722; + int i10723; + int i10724; + int i10725; + int i10726; + int i10727; + int i10728; + int i10729; + int i10730; + int i10731; + int i10732; + int i10733; + int i10734; + int i10735; + int i10736; + int i10737; + int i10738; + int i10739; + int i10740; + int i10741; + int i10742; + int i10743; + int i10744; + int i10745; + int i10746; + int i10747; + int i10748; + int i10749; + int i10750; + int i10751; + int i10752; + int i10753; + int i10754; + int i10755; + int i10756; + int i10757; + int i10758; + int i10759; + int i10760; + int i10761; + int i10762; + int i10763; + int i10764; + int i10765; + int i10766; + int i10767; + int i10768; + int i10769; + int i10770; + int i10771; + int i10772; + int i10773; + int i10774; + int i10775; + int i10776; + int i10777; + int i10778; + int i10779; + int i10780; + int i10781; + int i10782; + int i10783; + int i10784; + int i10785; + int i10786; + int i10787; + int i10788; + int i10789; + int i10790; + int i10791; + int i10792; + int i10793; + int i10794; + int i10795; + int i10796; + int i10797; + int i10798; + int i10799; + + if (unlikely) { + // Since Foo is not loaded this will turn into an uncommon trap + Class c = Foo.class; + + StringBuilder sb = new StringBuilder(); + } + } +} diff -r 6ea9f58eb1a2 -r a746afa69a7e jaxp/.hgtags --- a/jaxp/.hgtags Thu Nov 07 08:16:23 2013 -0800 +++ b/jaxp/.hgtags Wed Jul 05 19:21:59 2017 +0200 @@ -236,3 +236,4 @@ c1f9158fbb9c2da50f6946fffd974e8236e08447 jdk8-b112 0046d2278204b7eff76803fc4623cb48c7e6384d jdk8-b113 1b1e12117fe2840e5d21ae9a4b309e4f981f3ea8 jdk8-b114 +f610fd46463e6b0533dd92bce11a1e7d84984e64 jdk8-b115 diff -r 6ea9f58eb1a2 -r a746afa69a7e jdk/.hgtags --- a/jdk/.hgtags Thu Nov 07 08:16:23 2013 -0800 +++ b/jdk/.hgtags Wed Jul 05 19:21:59 2017 +0200 @@ -236,3 +236,4 @@ f002f5f3a16cca62e139cb8eed05ffaeb373587d jdk8-b112 5b4261b4b72af53e8e178933ef6bc6c7f8cdbc60 jdk8-b113 f26a0c8071bde1e3b923713c75156e4a58955623 jdk8-b114 +f82b730c798b6bf38946baaba8a7d80fd5efaa70 jdk8-b115 diff -r 6ea9f58eb1a2 -r a746afa69a7e jdk/makefiles/CompileDemos.gmk --- a/jdk/makefiles/CompileDemos.gmk Thu Nov 07 08:16:23 2013 -0800 +++ b/jdk/makefiles/CompileDemos.gmk Wed Jul 05 19:21:59 2017 +0200 @@ -157,8 +157,8 @@ BUILD_DEMOS += $(JDK_OUTPUTDIR)/demo/jfc/CodePointIM/_the.services -$(eval $(call SetupDemo,MoleculeViewer,applets,,XYZChemModel,,,example*.html XYZApp.java)) -$(eval $(call SetupDemo,WireFrame,applets,,ThreeD,,,example*.html ThreeD.java)) +$(eval $(call SetupDemo,MoleculeViewer,applets,,XYZChemModel,,,example*.html *.java)) +$(eval $(call SetupDemo,WireFrame,applets,,ThreeD,,,example*.html *.java)) $(eval $(call SetupDemo,FileChooserDemo,jfc,,FileChooserDemo,,,README*)) $(eval $(call SetupDemo,Font2DTest,jfc,,Font2DTest,,,*.html *.txt)) $(eval $(call SetupDemo,Metalworks,jfc,,Metalworks,,,README*)) diff -r 6ea9f58eb1a2 -r a746afa69a7e jdk/makefiles/SignJars.gmk --- a/jdk/makefiles/SignJars.gmk Thu Nov 07 08:16:23 2013 -0800 +++ b/jdk/makefiles/SignJars.gmk Wed Jul 05 19:21:59 2017 +0200 @@ -1,5 +1,5 @@ # -# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -48,8 +48,10 @@ # be built, signed, and then the resulting jar files MUST BE CHECKED # INTO THE CLOSED PART OF THE WORKSPACE*. This separate step *MUST NOT # BE FORGOTTEN*, otherwise a bug fixed in the source code will not be -# reflected in the shipped binaries. The "sign-jars" target in the top -# level Makefile should be used to generate the required files. +# reflected in the shipped binaries. +# +# Please consult with Release Engineering, which is responsible for +# creating the final JCE builds suitable for checkin. # # Default target @@ -58,7 +60,7 @@ ifndef OPENJDK README-MAKEFILE_WARNING := \ - "\nPlease read makefiles/SignJars.gmk for further build instructions.\n" + "\nPlease read jdk/makefiles/SignJars.gmk for further build instructions.\n" # # Location for JCE codesigning key. @@ -84,20 +86,34 @@ $@ $(SIGNING_ALIAS) < $(SIGNING_PASSPHRASE) @$(PRINTF) "\nJar codesigning finished.\n" -JAR_LIST := jce.jar \ +JAR_LIST := \ + jce.jar \ local_policy.jar \ sunec.jar \ sunjce_provider.jar \ sunpkcs11.jar \ - US_export_policy.jar + US_export_policy.jar \ + sunmscapi.jar \ + ucrypto.jar \ + # -SIGNED_JARS := $(addprefix $(JCE_OUTPUTDIR)/,$(JAR_LIST)) +UNSIGNED_JARS := $(wildcard $(addprefix $(JDK_OUTPUTDIR)/unsigned/, $(JAR_LIST))) + +ifeq ($(UNSIGNED_JARS), ) + $(error No jars found in $(JDK_OUTPUTDIR)/unsigned/) +endif + +SIGNED_JARS := $(patsubst $(JDK_OUTPUTDIR)/unsigned/%,$(JCE_OUTPUTDIR)/%, $(UNSIGNED_JARS)) $(SIGNED_JARS): check-keystore all: $(SIGNED_JARS) - @$(PRINTF) "\n***The jar files built by the 'jar-sign' target must***" - @$(PRINTF) "\n***still be checked into the closed workspace!***" + @$(PRINTF) "\n*** The jar files built by the 'sign-jars' target are developer ***" + @$(PRINTF) "\n*** builds only and *MUST NOT* be checked into the closed workspace. ***" + @$(PRINTF) "\n*** ***" + @$(PRINTF) "\n*** Please consult with Release Engineering: they will generate ***" + @$(PRINTF) "\n*** the proper binaries for the closed workspace. ***" + @$(PRINTF) "\n" @$(PRINTF) $(README-MAKEFILE_WARNING) endif # !OPENJDK diff -r 6ea9f58eb1a2 -r a746afa69a7e jdk/src/solaris/native/java/lang/java_props_macosx.c --- a/jdk/src/solaris/native/java/lang/java_props_macosx.c Thu Nov 07 08:16:23 2013 -0800 +++ b/jdk/src/solaris/native/java/lang/java_props_macosx.c Wed Jul 05 19:21:59 2017 +0200 @@ -106,6 +106,12 @@ } int isInAquaSession() { + // environment variable to bypass the aqua session check + char *ev = getenv("AWT_FORCE_HEADFUL"); + if (ev && (strncasecmp(ev, "true", 4) == 0)) { + // if "true" then tell the caller we're in an Aqua session without actually checking + return 1; + } // Is the WindowServer available? SecuritySessionId session_id; SessionAttributeBits session_info; diff -r 6ea9f58eb1a2 -r a746afa69a7e make/scripts/webrev.ksh --- a/make/scripts/webrev.ksh Thu Nov 07 08:16:23 2013 -0800 +++ b/make/scripts/webrev.ksh Wed Jul 05 19:21:59 2017 +0200 @@ -27,7 +27,7 @@ # Documentation is available via 'webrev -h'. # -WEBREV_UPDATED=25.0-hg+openjdk.java.net +WEBREV_UPDATED=25.1-hg+openjdk.java.net HTML=' /dev/null + hg cat -R $hg_root --rev $parentrev --output $olddir/$PDIR/$PF $PDIR/$PF 2>/dev/null else $parent cat --rev $parentrev --output $olddir/$PDIR/$PF $PDIR/$PF 2>/dev/null fi diff -r 6ea9f58eb1a2 -r a746afa69a7e nashorn/.hgtags --- a/nashorn/.hgtags Thu Nov 07 08:16:23 2013 -0800 +++ b/nashorn/.hgtags Wed Jul 05 19:21:59 2017 +0200 @@ -224,3 +224,4 @@ 6a4fdb3bb4e34af4c5bb8db467bb01e13b1a7e31 jdk8-b112 676cd7bf5e092356f7ee2116c8cf88cdc12377c7 jdk8-b113 79f7b79bf97b71c9b5c9b103dbdef5f269eeb86d jdk8-b114 +f0d3ac2474ee755b1180ec71bcdfa190845b17eb jdk8-b115