H h__text__TEXTh`__gcc_except_tab__TEXT__StaticInit__TEXT>؛__const__TEXTX__bss__DATA__mod_init_func__DATA __compact_unwind__LD __eh_frame__TEXTP h2  Xh P UHH5HH ]fDUHH5HH ]fDUHH5HH ]HP %UHH5HH H=H5H]b"_T_oe_s~_____Lj_xI_ D=_ _ 7%_x__ BC_a_ E_S_x_0$e_Z)_ F?x_ 9__z_X_zD_>}_h_#L_z_Id_ b:'_.i_a_ T6_&_ _b`_ >-_L_z_ d)H_\_D_7__,_^_ A___|_ ._lf_Jm_Pw __|_N_ K1_ 3j_*?__8WN__ _Mp_z__(R_@ __t_U __ 1P__ >5__Y_.M_ =__D_%x_V2_8(#__b9_ @_0G1_hHM_g_rP&_*P_#N_&Ui_ a_"P____%3_$ _ :ĩ_&D>_N?_&O_$_$\"_!_'\-_#q_!@r_#v_o_"_!_%"V_%9_%^-_ V_"0z_ 6dtkComposer,p{dtkComposerNodeBooleanOperatorBinaryNor.json!͞dtkComposerNodeSpawnEmbedded.json-6odtkComposerNodeNumberOperatorUnarySquare.json)$j>dtkComposerNodeNumberOperatorUnaryLn.json/ dtkComposerNodeNumberOperatorBinaryNthroot.json"!>dtkComposerNodeNumberAlmosteq.json, \dtkComposerNodeNumberOperatorBinaryMult.json,3>dtkComposerNodeNumberOperatorUnaryLog10.json+ % ^dtkComposerNodeNumberOperatorUnaryDecr.json+ wP^dtkComposerNodeBooleanOperatorBinaryOr.json  ^dtkComposerNodeControlWhile.json. dtkComposerNodeNumberOperatorUnaryRad2Deg.json$^dtkComposerNodeCommunicatorRank.jsondtkComposerNodeBoolean.json$ ~dtkComposerNodeCommunicatorSize.json,TھdtkComposerNodeNumberOperatorUnaryFloor.jsondtkComposerNodeE.json,rUdtkComposerNodeNumberOperatorUnaryRound.json&>dtkComposerNodeControlParallelMap.json>dtkComposerNodeFileWrite.jsonwdtkComposerNodeInteger.json*rdtkComposerNodeNumberOperatorUnaryCos.json-dtkComposerNodeBooleanOperatorBinaryXnor.json!edtkComposerNodeStringReplace.json-cdtkComposerNodeBooleanOperatorBinaryNimp.json-ZdtkComposerNodeNumberOperatorBinaryRatio.json+UdtkComposerNodeNumberOperatorUnaryAcos.json"dtkComposerNodeControlDoWhile.json+ϜdtkComposerNodeBooleanOperatorUnaryNot.json {ÞdtkComposerNodeControlCase.json dtkComposerNodeFile.json (dtkComposerNodeControlIf.json,PIdtkComposerNodeBooleanOperatorBinaryAnd.json8pixmaps~dtkComposerNodeFileList.json,pBdtkComposerNodeBooleanOperatorBinaryXor.jsondtkComposerNodeExec.json+^dtkComposerNodeNumberOperatorUnaryCeil.json& udtkComposerNodeNumberComparatorGt.json!@~dtkComposerNodeMetaContainer.json-+dtkComposerNodeNumberOperatorBinaryMinus.json'>dtkComposerNodeMetaContainerResize.json->dtkComposerNodeFileExists.json'=dtkComposerNodeMetaContainerInsert.json)mdtkComposerNodeMetaContainerRemoveAt.jsondtkComposerNodePrint.json*!dtkComposerNodeNumberOperatorUnarySin.json,HdtkComposerNodeBooleanOperatorBinaryImp.json. dtkComposerNodeNumberOperatorBinaryModulo.json+e>dtkComposerNodeNumberOperatorUnaryAsin.json dtkComposerNodeAnySource.json' X^dtkComposerNodeNumberComparatorLte.json\dtkComposerNodeComposite.json XdtkComposerNote.json)>dtkComposerNodeNumberComparatorEqual.json, !dtkComposerNodeNumberComparatorNotequal.json@dtkComposerNodeLogger.json6dtkComposerNodeControlMap.json%mdtkComposerNodeMetaContainerSize.json*dtkComposerNodeNumberOperatorUnaryInv.json.D{^dtkComposerNodeNumberOperatorUnaryDeg2Rad.json$ʎdtkComposerNodeCommunicatorSend.json% dtkComposerNodeNumberNotalmosteq.json7:~dtkComposerNodeAnyTag.json'#dtkComposerNodeCommunicatorReceive.json ~dtkComposerNodeSpawn.jsonV^dtkComposerNodeControlFor.json&udtkComposerNodeNumberComparatorLt.json dtkComposerNodeString.json/ R:dtkComposerNodeNumberOperatorBinaryEucldiv.json^dtkComposerNodeDirectory.json"~dtkComposerNodeControlForEach.json SdtkComposerNodeRemoteSubmit.json* "dtkComposerNodeNumberOperatorUnaryExp.jsondtkComposerNodeRemote.json-ȦdtkComposerNodeNumberOperatorBinaryPower.json.eh^dtkComposerNodeStringOperatorBinaryAppend.json'>dtkComposerNodeMetaContainerTakeAt.json"QdtkComposerNodeControllerRank.json,>dtkComposerNodeNumberOperatorBinaryPlus.json' gdtkComposerNodeMetaContainerAppend.json& ^dtkComposerNodeMetaContainerSetAt.json' WdtkComposerNodeNumberComparatorGte.json+~dtkComposerNodeNumberOperatorBinaryMin.json(=dtkComposerNodeMetaContainerPrepend.json 3dtkComposerNodeRange.json+ %dtkComposerNodeNumberOperatorUnaryIncr.json MdtkComposerNodeReal.json*!~dtkComposerNodeNumberOperatorUnaryTan.json :dtkComposerNodeFileRead.json5>dtkComposerNodeStringOperatorBinaryLogicEquality.json+G~dtkComposerNodeNumberOperatorBinaryMax.json dtkComposerNodePi.json# 2dtkComposerNodeMetaContainerAt.json-#dtkComposerNodeBooleanOperatorBinaryNand.json+ e~dtkComposerNodeNumberOperatorUnaryAtan.json* rdtkComposerNodeNumberOperatorUnaryAbs.json+m>dtkComposerNodeNumberOperatorUnarySqrt.json*%dtkCreatorToolbarButton-small-Inactive.tif' dtkCreatorToolbarButton-big-Pressed.tif'6SgdtkCreatorToolbarButton_Run_Pressed.pngҞdtkComposerNodeFlag-yellow.png(DdtkCreatorToolbarButton_Pause_Active.png+P dtkCreatorToolbarButton_Continue_Active.png)gdtkCreatorToolbarButton_Pause_Pressed.png& dtkCreatorToolbarButton-big-Active.tif(udtkCreatorToolbarButton_Run_Inactive.pngqdtkComposerNodeFlag-orange.png) kdtkCreatorToolbarButton_Step_Inactive.png) dtkCreatorToolbarButton-small-Pressed.tif:|dtkComposerNodeFlag-red.png) dtkCreatorToolbarButton_Stop_Inactive.png*'dtkCreatorToolbarButton_Pause_Inactive.pngdtkComposerNodeFlag-pink.png'dtkCreatorToolbarButton_Stop_Active.png'dtkCreatorToolbarButton_Step_Active.png(DdtkCreatorToolbarButton_Stop_Pressed.png(BdtkCreatorToolbarButton_Step_Pressed.png( 7dtkCreatorToolbarButton_Reset_Active.png fGdtkComposerNodeFlag-blue.png(u5dtkCreatorToolbarButton-big-Inactive.tif& CdtkCreatorToolbarButton_Run_Active.pngtRdtkComposerNode-breakpoint.png(dtkCreatorToolbarButton-small-Active.tifZdtkComposerNodeFlag-gray.png9GdtkComposerNodeFlag-green.png { "title" : "Nor", "kind" : "atomic", "type" : "nor", "tags" : ["boolean", "atomic", "binary", "nor"], "description" : "

Boolean NOT OR operator

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } ~{ "title" : "Embedded Spawn", "kind" : "composite", "type" : "spawnEmbedded", "tags" : ["spawn", "map"], "description" : "

Embedded Spawn Node

The spawn node used by the parallel map node.

", "inputs" : ["np", "communicator", "rank"], "outputs" : ["communicator"] } { "title" : "Square", "kind" : "atomic", "type" : "square", "tags" : ["number", "atomic", "unary", "square"], "description" : "

Returns the square of the input number.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Ln", "kind" : "atomic", "type" : "ln", "tags" : ["number", "atomic", "unary", "ln"], "description" : "

Returns the natural logarithm of the input number.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "nthroot", "kind" : "atomic", "type" : "nthroot", "tags" : ["number", "atomic", "binary", "nthroot"], "description" : "

Returns nth root of x

", "inputs" : ["x","n"], "outputs" : ["value"] } e{ "title" : "Almosteq", "kind" : "atomic", "type" : "almosteq", "tags" : ["number", "atomic", "binary", "almosteq"], "description" : "

Returns true if the absolute value of the difference of lhs and rhs is less than epsilon.

", "inputs" : ["lhs","rhs","epsilon"], "outputs" : ["value"] }  { "title" : "Mult", "kind" : "atomic", "type" : "mult", "tags" : ["number", "atomic", "binary", "mult"], "description" : "

Multiply two numbers.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } 0{ "title" : "Log10", "kind" : "atomic", "type" : "log10", "tags" : ["number", "atomic", "unary", "log10"], "description" : "

Returns the binary logarithm in base 10 of the input number.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Decr", "kind" : "atomic", "type" : "decr", "tags" : ["number", "atomic", "unary", "decr", "minus"], "description" : "

Decrease input value by one.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Or", "kind" : "atomic", "type" : "or", "tags" : ["boolean", "atomic", "binary", "or"], "description" : "

Boolean OR operator

", "inputs" : ["lhs", "rhs"], "outputs" : ["value"] } { "title" : "While", "kind" : "control", "type" : "while", "tags" : ["while", "control","loop"], "description" : "

Perform while loop

The While control node allows you to execute a subpart of the composition as long as a given condition is fullfilled. The condition is tested before the first step is executed.

The node layout has two blocks:

", "inputs" : [], "outputs" : [] } { "title" : "Rad2deg", "kind" : "atomic", "type" : "rad2deg", "tags" : ["number", "atomic", "unary", "rad2deg"], "description" : "

Convert radian to degree.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Comm Rank", "kind" : "atomic", "type" : "communicatorRank", "tags" : ["remote", "distributed", "communicator", "network", "rank", "wid"], "description" : "

Communicator Rank Node

This node should be put in a Remote or Spawn node only.

The output is the rank (or wid, as worker id).

", "inputs" : [], "outputs" : ["rank"] } p{ "title" : "Boolean", "kind" : "atomic", "type" : "boolean", "tags" : ["boolean", "atomic"], "description" : "

Boolean node

When used as a source node (ie without any edge at the input), one can set the boolean value through the node editor.

Otherwise, one can feed its input either with a boolean, integer, real or string value. When necessary, the node performs a conversion and returns the corresponding boolean value.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Comm Size", "kind" : "atomic", "type" : "communicatorSize", "tags" : ["remote", "distributed", "communicator", "network", "size"], "description" : "

Communicator Size Node

This node should be put in a Remote or Spawn node only.

The output is the size of the communicator.

", "inputs" : [], "outputs" : ["size"] } { "title" : "Floor", "kind" : "atomic", "type" : "floor", "tags" : ["number", "atomic", "unary", "floor"], "description" : "

Compute the largest previous integer.

", "inputs" : ["value"], "outputs" : ["value"] } V{ "title" : "E", "kind" : "atomic", "type" : "e", "tags" : ["constant", "e"], "description" : "

The number e is an important mathematical constant, approximately equal to 2.71828, that is the base of the natural logarithms.

", "inputs" : [], "outputs" : ["value"] } { "title" : "Round", "kind" : "atomic", "type" : "round", "tags" : ["number", "atomic", "unary", "round"], "description" : "

Round the number.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Parallel Map", "kind" : "control", "type" : "parallelMap", "tags" : ["map", "control", "loop", "parallel"], "description" : "

High order function: the Parallel Map node takes a container and applies a set of functions (the subcomposition inside the node) to each of its element to generate a new container. Contrary to the reguler Map node, the parallel one use multiple threads; the default number of threads used is QThread::idealThreadCount(). If the output container elements are not of the same type, you can optionnaly use the input port of the footer (bottom left) to set the output container.

Inside the block node, the outputs (on the left) are:

container:
Input container
size:
Input container size
index:
Current index
item:
Current item

And the input (on the right) is:

newitem:
New item value at current index

", "inputs" : [], "outputs" : [] } h{ "title" : "File Write", "kind" : "atomic", "type" : "fileWrite", "tags" : ["file", "atomic","write","binary"], "description" : "

Write a binary object (QByteArray) into a file

", "inputs" : ["content" ,"filename"], "outputs" : ["success","filename"], "color" : "darkgoldenrod" } { "title" : "Integer", "kind" : "atomic", "type" : "integer", "tags" : ["integer", "number", "long int", "int", "short int", "atomic"], "description" : "

Integer node handles 64-bit int type.

When used as a source node (ie without any edge at the input), one can set the integer value through the node editor.

Otherwise, one can feed its input either with a boolean, integer, real or string value. When necessary, the node performs a conversion and returns the corresponding integer value.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Cos", "kind" : "atomic", "type" : "cos", "tags" : ["number", "atomic", "unary", "cos"], "description" : "

Returns the cosine of the input number.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Xnor", "kind" : "atomic", "type" : "xnor", "tags" : ["boolean", "atomic", "binary", "xnor"], "description" : "

Boolean NOT XOR operator

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } v{ "title" : "String List Replace", "kind" : "atomic", "type" : "string_replace", "tags" : ["string", "atomic", "replace", "regexp"], "description" : "

Apply the given regexp to a string and replace the matching substring with 'after'

", "inputs" : ["string","regexp", "after"], "outputs" : ["string"] } -{ "title" : "Nimp", "kind" : "atomic", "type" : "nimp", "tags" : ["boolean", "atomic", "binary", "nimp", "implication"], "description" : "

Boolean NIMP operator. Negation of IMP.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } !{ "title" : "Ratio", "kind" : "atomic", "type" : "ratio", "tags" : ["number", "atomic", "binary", "ratio", "division"], "description" : "

Compute lhs divided by rhs .

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } { "title" : "Acos", "kind" : "atomic", "type" : "acos", "tags" : ["number", "atomic", "unary", "acos"], "description" : "

Compute Arc Cosine.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Do While", "kind" : "control", "type" : "do while", "tags" : ["do", "while", "do while","control", "loop"], "description" : "

Perform do while loop

The Do While control node allows you to execute a subpart of the composition as long as a given condition is fullfilled. The condition is tested after the first step is executed.

The node layout has two blocks:

", "inputs" : [], "outputs" : [] } { "title" : "Not", "kind" : "atomic", "type" : "not", "tags" : ["boolean", "atomic", "unary", "not"], "description" : "

Boolean NOT operator

", "inputs" : ["value"], "outputs" : ["value"] } b{ "title" : "Case", "kind" : "control", "type" : "case", "tags" : ["case", "control"], "description" : "

Select part of the composition

The Case control node allows you to control if a part of the composition is executed or not based on whether a given integer values

The value is set by linking \"switch\" port in the header of the node, a integer type being expected.

The part of the composition located in the \"nth\" block is executed when the value is equal to n.

", "inputs" : [], "outputs" : [] } { "title" : "File", "kind" : "atomic", "type" : "file", "tags" : ["file", "atomic"], "description" : "

File node

You can either use the Browse button in the node editor, or set the input port as a string that can be a local filename or a URL. The output port is the name of the local filename (temporary file downloaded if the input was an http URL)

", "inputs" : ["filename"], "outputs" : ["file"], "color" : "darkgoldenrod" }  { "title" : "If", "kind" : "control", "type" : "if", "tags" : ["if", "control"], "description" : "

Select part of the composition

The If control node allows you to control if a part of the composition is executed or not based on whether a given condition is true or false.

The condition is set by linking \"cond\" port in the header of the node, a boolean type being expected.

The part of the composition located in the \"then\" block is executed when the condition is fullfilled. Otherwise, the part inside the \"else\" block is performed.

", "inputs" : [], "outputs" : [] } { "title" : "And", "kind" : "atomic", "type" : "and", "tags" : ["boolean", "atomic", "binary", "and"], "description" : "

Boolean AND operator

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } { "title" : "File List", "kind" : "atomic", "type" : "fileList", "tags" : ["file", "atomic","list", "directory", "ls"], "description" : "

Returns a list of the names of all the files and directories in the directory, according to the attribute filters. If no pattern is given, all the files in the directory are added to the list

", "inputs" : ["directory","pattern"], "outputs" : ["files"], "color" : "darkgoldenrod" } { "title" : "Xor", "kind" : "atomic", "type" : "xor", "tags" : ["boolean", "atomic", "unary", "xor"], "description" : "

Boolean XOR operator

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } { "title" : "Exec", "kind" : "process", "type" : "exec", "tags" : ["exec", "command", "shell"], "description" : "

Exec node

Execute a command. Inputs: The outputs are the standard output and error, and the return code of the command

", "inputs" : ["command","args","timeout","environment"], "outputs" : ["stdout","stderr","exit code"] } { "title" : "Ceil", "kind" : "atomic", "type" : "ceil", "tags" : ["number", "atomic", "unary", "ceil"], "description" : "

Ceiling function (smallest following integer)

", "inputs" : ["value"], "outputs" : ["value"] } ?{ "title" : "Gt", "kind" : "atomic", "type" : "gt", "tags" : ["number", "atomic", "binary", "gt", "greater"], "description" : "

Returns true if lhs is strictly greater than rhs.

", "inputs" : ["lhs", "rhs"], "outputs" : ["value"] } ${ "title" : "Container", "kind" : "atomic", "type" : "container", "tags" : ["meta", "container"], "description" : "

Meta Container

", "inputs" : ["size", "value"], "outputs" : ["container"] } { "title" : "Minus", "kind" : "atomic", "type" : "minus", "tags" : ["number", "atomic", "binary", "minus"], "description" : "

Returns a - b.

", "inputs" : ["a","b"], "outputs" : ["value"] } W{ "title" : "Container Resize", "kind" : "atomic", "type" : "containerResize", "tags" : ["meta", "container", "resize"], "description" : "

Meta Container Resize

Resize container

", "inputs" : ["container", "size"], "outputs" : ["container"] } 7{ "title" : "File Exists", "kind" : "atomic", "type" : "fileExists", "tags" : ["file", "atomic","exists"], "description" : "

return true if the File exists

", "inputs" : ["file"], "outputs" : ["exists"], "color" : "darkgoldenrod" } x{ "title" : "Container Insert", "kind" : "atomic", "type" : "containerInsert", "tags" : ["meta", "container", "insert"], "description" : "

Meta Container Insert

Insert value in container at given index

", "inputs" : ["container", "index", "value"], "outputs" : ["container"] } t{ "title" : "Container Remove At", "kind" : "atomic", "type" : "containerRemoveAt", "tags" : ["meta", "container", "remove"], "description" : "

Meta Container Remove At

Remove container value at given index

", "inputs" : ["container", "index"], "outputs" : ["container"] } { "title" : "Print", "kind" : "atomic", "type" : "print", "tags" : ["logger", "stdout", "print", "debug"], "description" : "

Print data to stout and/or stderr

", "inputs" : ["stdout","stderr"], "outputs" : [] } { "title" : "Sin", "kind" : "atomic", "type" : "sin", "tags" : ["number", "atomic", "unary", "sin"], "description" : "

Returns the sine of the input number.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Imp", "kind" : "atomic", "type" : "imp", "tags" : ["boolean", "atomic", "binary", "imp", "implication"], "description" : "

Boolean IMP operator. Implication: The statement A IMP B is the equivalent of the logical statement \"If A Then B.\" A IMP B is False only if A is True and B is False. It is True in all other cases.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } 5{ "title" : "Modulo", "kind" : "atomic", "type" : "modulo", "tags" : ["number", "atomic", "binary", "modulo", "modulus"], "description" : "

Returns the remainder of division of lhs by rhs.

", "inputs" : ["lhs","rhs"], "outputs" : ["mod"] } { "title" : "Asin", "kind" : "atomic", "type" : "asin", "tags" : ["number", "atomic", "unary", "asin"], "description" : "

Compute Arc Sine.

", "inputs" : ["value"], "outputs" : ["value"] } o{ "title" : "Any Source", "kind" : "atomic", "type" : "anySource", "tags" : ["constant", "distributed", "remote", "network", "any" , "message"], "description" : "

Rank of ANY source (like MPI_ANY_SOURCE ). Can be used to receive a message from any source.

", "inputs" : [], "outputs" : ["value"] } ?{ "title" : "Lte", "kind" : "atomic", "type" : "lte", "tags" : ["number", "atomic", "binary", "lte", "lesser"], "description" : "

Returns true if lhs is lesser or equal than rhs.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } { "title" : "Composite", "kind" : "composite", "type" : "composite", "tags" : ["composite", "group"], "description" : "

Composite Node

The composite node enables to gather nodes in order to either hide part of a composition or create a reusable meta-component.

A composite node can contain another composite nodes and can be contained by a composite.

One can add or remove input and output ports. These ports enable to insert the composite node into the composition. They enable also to connect the contained nodes to the exterior.

User can flatten the composite node to visualise its content using the combination Ctrl + double clic.

User can also enter the composite node using double clic. In this case it can modify its content. To exit the node, another double clic on the opened composite node suffices.

To add a node into a closed composite, user can move the node over it. When the composite is opened, one uses drag and drop

", "inputs" : [], "outputs" : [] } { "title" : "Note", "kind" : "note", "type" : "note", "tags" : ["note"], "description" : "

Note for annotate composition

Notes help to identify and annotate some parts of a composition.

" } { "title" : "Equal", "kind" : "atomic", "type" : "equal", "tags" : ["number", "atomic", "binary", "equal"], "description" : "

Returns true if lhs equals rhs.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } <{ "title" : "Notequal", "kind" : "atomic", "type" : "notequal", "tags" : ["number", "atomic", "binary", "notequal"], "description" : "

Returns true if lhs is not equal to rhs.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } { "title" : "Logger", "kind" : "atomic", "type" : "logger", "tags" : ["logger", "debug"], "description" : "

Log message

", "inputs" : ["value","header","level"], "outputs" : [] } { "title" : "Map", "kind" : "control", "type" : "map", "tags" : ["map", "control", "loop"], "description" : "

High order function: the Map node takes a container and applies a set of functions (the subcomposition inside the node) to each of its element to generate a new container. If the output container elements are not of the same type, you can optionnaly use the input port of the footer (bottom left) to set the output container.

Inside the block node, the outputs (on the left) are:

container:
Input container
size:
Input container size
index:
Current index
item:
Current item

And the input (on the right) is:

newitem:
New item value at current index

", "inputs" : [], "outputs" : [] } U{ "title" : "Container Size", "kind" : "atomic", "type" : "containerSize", "tags" : ["meta", "container","size", "count", "length"], "description" : "

Meta Container Size

Get container size

", "inputs" : ["container"], "outputs" : ["size"] } { "title" : "Inv", "kind" : "atomic", "type" : "inv", "tags" : ["number", "atomic", "unary", "inv"], "description" : "

Returns inverse of the input number.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Deg2rad", "kind" : "atomic", "type" : "deg2rad", "tags" : ["number", "atomic", "unary", "deg2rad"], "description" : "

Convert degree to radian value.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Send", "kind" : "atomic", "type" : "communicatorSend", "tags" : ["remote", "distributed", "communicator", "network", "send"], "description" : "

Communicator Send Node

This node should be put in a Remote or Spawn node only.

The inputs are

data
data to be sent
target rank
Rank of the target (receiver)
tag
message tag (optionnal)
socket
send message in given socket instead of communicator (optionnal)

The output is the status of the send execution (true if successful).

", "inputs" : ["data","target rank", "tag","socket"], "outputs" : ["status"] } n{ "title" : "Notalmosteq", "kind" : "atomic", "type" : "notalmosteq", "tags" : ["number", "atomic", "binary", "notalmosteq"], "description" : "

Returns true if the absolute value of the difference of lhs and rhs is more than epsilon.

", "inputs" : ["lhs","rhs","epsilon"], "outputs" : ["value"] } U{ "title" : "Any Tag", "kind" : "atomic", "type" : "anyTag", "tags" : ["constant", "distributed", "remote", "network", "any", "tag", "message"], "description" : "

Can be used to receive a message with any tag (like MPI_ANY_TAG ).

", "inputs" : [], "outputs" : ["value"] } { "title" : "Receive", "kind" : "atomic", "type" : "communicatorReceive", "tags" : ["remote", "distributed", "communicator", "network", "receive"], "description" : "

Communicator Receive Node

This node should be put in a Remote or Spawn node only.

The inputs are:

source rank
Rank of the source (sender)
tag
message tag (optionnal)
data
(FIXME)
socket
receive message from given socket instead of communicator (optionnal)

The outputs are:

data
data received (as a variant)
source
source rank
tag
message tag
.

", "inputs" : ["source rank", "tag", "data","socket"], "outputs" : ["data","source","tag"] } { "title" : "Spawn", "kind" : "composite", "type" : "spawn", "tags" : ["spawn", "distributed", "threads", "communicator"], "description" : "

Spawn Node

The spawn will spanw multiples threads to run it's internal composition. It uses a qthread communicator to achieve this.

", "inputs" : ["np", "communicator", "rank"], "outputs" : [""] } { "title" : "For", "kind" : "control", "type" : "for", "tags" : ["for", "control"], "description" : "

Perform for loop

The For control node is a convenient node that enable users to mimic classical for instruction of C-language.

The node layout has threee blocks plus an input counter value i_begin provided by a previous node of the composition. This counter value can be incremented and used for test stop criterion inside dedicated blocks, namely the conditional block and the increment block. The body of the loop is defined by the subcomposition standing inside the body block.

During execution, the condition is firstly tested, then if it is valid then the body composition is executed and eventually, the incrmental process is performed.

The last value of the loop counter can be used further in the composition thanks to i_end port.

", "inputs" : [], "outputs" : [] } :{ "title" : "Lt", "kind" : "atomic", "type" : "lt", "tags" : ["number", "atomic", "binary", "lt", "lesser"], "description" : "

Returns true if lhs is strictly less than rhs.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } M{ "title" : "String", "kind" : "atomic", "type" : "string", "tags" : ["string", "atomic", "string"], "description" : "

String node

When used as a source node (ie without any edge at the input), one can set the string value through the node editor.

Otherwise, one can feed its input with any value. When necessary, the node performs a conversion and returns the corresponding string value.

", "inputs" : ["value"], "outputs" : ["value"] } 8{ "title" : "Eucldiv", "kind" : "atomic", "type" : "eucldiv", "tags" : ["number", "atomic", "binary", "eucldiv"], "description" : "

.Returns lhs div rhs where div is the Euclidean division.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } { "title" : "Directory", "kind" : "atomic", "type" : "fileDir", "tags" : ["file", "atomic","directory"], "description" : "

Directory node

You can either use the Browse button in the node editor, or set the input port as is a string that can be a local directory name. The output port is the name of the local directory name

", "inputs" : ["dir"], "outputs" : ["dir"], "color" : "darkgoldenrod" } { "title" : "ForEach", "kind" : "control", "type" : "foreach", "tags" : ["foreach", "control", "loop", "container"], "description" : "

Perform foreach loop

The Foreach control node enable to iterate over all the items of a given input container in order.

The node takes a container as input and executes the body blocks until reaching the end of this container. For each iteration, users can retrieve the container itself, its size, the current item and the index of the current iteration.

During execution, the condition is firstly tested, then if it is valid then the body composition is executed and eventually, the incrmental process is performed.

The las value of the loop counter can be used further in the composition thanks to i_end port.

", "inputs" : [], "outputs" : [] } { "title" : "Remote Submit", "kind" : "process", "type" : "remoteSubmit", "tags" : ["remote", "distributed", "world", "network", "submit"], "description" : "

Remote Submit Node

The remote submit node enables to submit a job on a remote cluster/machine.

The inputs are:

cluster:
url of the cluster (e.g. http://nef-devel.inria.fr/)
nodes:
number of nodes (default: 1)
cores:
number of cores (default: 1)
walltime:
walltime of job, HH:MM:SS (optionnal)
queuename:
scheduler queue (optionnal)
options:
scheduler specific options
policy:
dtkDistributed policy qthread, mpi or mpi3 (defaut:qthread)

The output is the jobid.

", "inputs" : ["cluster", "nodes", "cores", "walltime", "queuename","options" ,"policy"], "outputs" : ["jobid"] } !{ "title" : "Exp", "kind" : "atomic", "type" : "exp", "tags" : ["number", "atomic", "unary", "exp"], "description" : "

Returns the exponential value of the input number..

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Remote", "kind" : "composite", "type" : "remote", "tags" : ["remote", "distributed", "world", "network"], "description" : "

Remote Node

The remote node executes a subcomposition on a remote device.

", "inputs" : ["jobid", "socket"], "outputs" : ["socket"] }  { "title" : "Power", "kind" : "atomic", "type" : "power", "tags" : ["number", "atomic", "binary", "power"], "description" : "

Returns lhs^rhs .

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } { "title" : "Append", "kind" : "atomic", "type" : "append", "tags" : ["string", "atomic", "concatenate", "append"], "description" : "

Append two strings.

", "inputs" : ["lhs","rhs"], "outputs" : ["string"] } { "title" : "Container Take At", "kind" : "atomic", "type" : "containerTakeAt", "tags" : ["meta", "container", "takeat"], "description" : "

Meta Container Take At

Remove container value at given index, the value is available as an output port

", "inputs" : ["container", "index"], "outputs" : ["container", "value"] } `{ "title" : "Controller Rank", "kind" : "atomic", "type" : "controllerRank", "tags" : ["constant", "controller", "rank"], "description" : "

Rank of the controller. Can be used to send a message to the controller using send in a remote node.

", "inputs" : [], "outputs" : ["value"] } #{ "title" : "Plus", "kind" : "atomic", "type" : "plus", "tags" : ["number", "atomic", "binary", "plus", "add", "sum"], "description" : "

Compute the sum of two numbers.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } c{ "title" : "Container Append", "kind" : "atomic", "type" : "containerAppend", "tags" : ["meta", "container","append"], "description" : "

Meta Container Append

Append an item in a container

", "inputs" : ["container", "value"], "outputs" : ["container"] } p{ "title" : "Container Set At", "kind" : "atomic", "type" : "containerSetAt", "tags" : ["meta", "container", "setat"], "description" : "

Meta Container Set At

Set container value at given index

", "inputs" : ["container", "index", "value"], "outputs" : ["container"] } A{ "title" : "Gte", "kind" : "atomic", "type" : "gte", "tags" : ["number", "atomic", "binary", "gte", "greater"], "description" : "

Returns true if lhs is greater or equal than rhs.

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } { "title" : "Min", "kind" : "atomic", "type" : "min", "tags" : ["number", "atomic", "binary", "min"], "description" : "

Returns the minimum of two numbers.

", "inputs" : ["lhs","rhs"], "outputs" : ["min"] } f{ "title" : "Container Prepend", "kind" : "atomic", "type" : "containerprepend", "tags" : ["meta", "container", "prepend"], "description" : "

Meta Container Prepend

Prepend value in container

", "inputs" : ["container", "value"], "outputs" : ["container"] } { "title" : "Range", "kind" : "atomic", "type" : "range", "tags" : ["range", "number"], "description" : "

Range node

Provides a value contained within a range.

", "outputs" : ["value"] } >{ "title" : "Incr", "kind" : "atomic", "type" : "incr", "tags" : ["number", "atomic", "unary", "incr","plus"], "description" : "

>Increments the input number of one (equivalent to the '++' operator).

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Real", "kind" : "atomic", "type" : "real", "tags" : ["real", "number", "double", "float", "atomic"], "description" : "

Real node handles 64-bit floating type (aka double).

When used as a source node (ie without any edge at the input), one can set the real value through the node editor.

Otherwise, one can feed its input either with a boolean, integer, double or string value. When necessary, the node performs a conversion and returns the corresponding real value.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Tan", "kind" : "atomic", "type" : "tan", "tags" : ["number", "atomic", "unary", "tan"], "description" : "

Returns the tangent of the input number.

", "inputs" : ["value"], "outputs" : ["value"] } A{ "title" : "File Read", "kind" : "atomic", "type" : "fileRead", "tags" : ["file", "atomic","read","binary"], "description" : "

Read a file as a binary (QByteArray)

", "inputs" : ["file"], "outputs" : ["content"], "color" : "darkgoldenrod" } ;{ "title" : "String Equality", "kind" : "atomic", "type" : "string_equality", "tags" : ["string", "atomic", "equality", "comparison"], "description" : "

Test the equality of two strings.

", "inputs" : ["string","string"], "outputs" : ["value"] } { "title" : "Max", "kind" : "atomic", "type" : "max", "tags" : ["number", "atomic", "binary", "max"], "description" : "

Returns the maximum of two numbers.

", "inputs" : ["lhs","rhs"], "outputs" : ["max"] } { "title" : "Pi", "kind" : "atomic", "type" : "pi", "tags" : ["constant", "pi"], "description" : "

Pi

", "inputs" : [], "outputs" : ["value"] } U{ "title" : "Container At", "kind" : "atomic", "type" : "containerAt", "tags" : ["meta", "container", "at"], "description" : "

Meta Container At

Get container value at given index

", "inputs" : ["container", "index"], "outputs" : ["value"] } { "title" : "Nand", "kind" : "atomic", "type" : "nand", "tags" : ["boolean", "atomic", "binary", "nand"], "description" : "

Boolean NOT AND operator

", "inputs" : ["lhs","rhs"], "outputs" : ["value"] } { "title" : "Atan", "kind" : "atomic", "type" : "atan", "tags" : ["number", "atomic", "unary", "atan"], "description" : "

Compute Arc tangent.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Abs", "kind" : "atomic", "type" : "abs", "tags" : ["number", "atomic", "unary", "abs"], "description" : "

Returns the absolute value of the input number.

", "inputs" : ["value"], "outputs" : ["value"] } { "title" : "Sqrt", "kind" : "atomic", "type" : "sqrt", "tags" : ["number", "atomic", "unary", "sqrt"], "description" : "

Returns the square root of the input number.

", "inputs" : ["value"], "outputs" : ["value"] } MM*\  P8$ BaPd6DbP NFcQVaN o큸mNb1*5PF$ ؋GiA4 ^7ےg\Ua_eT.έP) "DUv@ws^l#%YXp6ͦ@B9A0R!Pw h@{P65K(gH}?@ d) E3Bf A<+SM/"cЎžm}`r|BsŒ4?Nv@z` >hxβ/$״DL,b}CZ" @=L8QK ň1Lf"FThi4ж:b|aGƅm&H<邽׃H'.Y~Z= ^%ljqc+E 7!{ TmǮ-A_7a)C&k{ڤ{|gR b.v#_T%S+8HWgY+ۖ&sفߗΌ!JLj!ߔPe99t[/g!a4p\Z T h:A,p?Ou#},,w%8 ?J <.#l65V.ixx f^y܅!TYXҁ`u`$]BMNޜh!Þe`3a60Z7`R81K{*dOilϹ2NȬnqDUl*OFyU% g4*W@O Ӡ|uZZveJu 8iT)@Q'qoVeUsB`$Gă?phW&RḚ~l0(7 񫱒rq y, h`H4oᱷ3 yh檥V9LhOaP`D@:'HK*y{:CD 15A<Ɔ`J[I%2%/zӘ. t&\a.][qAi %bM$$3" GI >MLF*e1ĔG0kIYI| %rAP,.F A QIBWiF7d0B%"R&@qr#ٜ@ I9)."x9/[<rHAl JAX*GBC%{ExlǰB].(@# JX [+ #DPڴ>b} sG) %ƥ1m SPo*:i`_DA+R.YAхAH2y8 ag ʀR+@6@W ٽ7Z/E-Mq%@aškɠ"ڷ0K hMc]Q&r+} ز;%)\A,rrh0 Ā?ˈD# xՄ`5mrY?J T tIluQP`  z2R(12=RSćiHHAdobe Photoshop CS2 Macintosh2007:07:24 11:55:34PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGDIDATXåKU]3Yfvٵba@(Ǎ>ć DlE#.۠Sȍ\D$%!6+c;1~Tݳ3b(=-[n:p'Б,J)\E!ǭAw⑷$BE2B>5RJ1DQ4 ._<J+5X*RV) yL5Je }Zovsu omZ{Qj:TehhRD>f2R$! cNfEcq.\L}0jB7RPI/c3n5# B%8 RJH)R"DXFcJ;vv!c?PJUR)#|buccb"β{ҿ%@>fz3|L.J Bl.<:꣋y<أ;Nܥk㠔B.l|@\RyR={&H!)( d9v'<08|yJp%U'5qAHդj[w݋RJ9.T*v Ǒ}if/X*Q.9{?O/L4R:(p3.X,hr\9>f|)S5\bZc={ٴio?^.?hBJIG2<Wk0WR)dJHp H)E6gE/\jͿjh͓{}r9"J9:!XqTb>k-&a"tgY<#_(/xWy꩟X 6.2)JUZ@#bX5X#0i5.d-A Z}l&秧bI@ "㠤Sntc &2a߯tX C:FK}]wŮݻt|3h=cM5.Z~}ɓDQDED&DH`E?ͧl277۶m#g1&kT&wŭ ׯک} $ #(BHO2jh4 VY]~8"($ C0jj'|Hn~?c(e ҥKػq֭[G^gR@d0|vCZܹB\޸qÁ iOaHDQԷe #R L$UŖ4;4M)'xi!efff<=/\X1<͊gGxzkD4-r} pp%/9~bՊ\.œ-zS/i:Aȗnv={E!Dz^Ʒ<0???3%J ?RT{~?!d犟fڵݯ??=}c8meoP|8(8I6>idkͩS׮tLl}8PHr'3@q?*o^tEXtSoftwareAdobe ImageReadyqe<IENDB`*PNG  IHDR  hgAMA a cHRMz%u0`:o_FbKGD pHYs  IDATHǵ[]Wu{ɥVĶbDHQ( > X)%"WЀ(mD_N566-i2L&g̜9{ua&8JZo}{^|\clWZ'=+ KI»[ά\݈ϡ6(l9:lwf/~ksõm۶'z'ŎI8޺X\&>o+[?v:_5*AK5)IlYg&dvOݘhP+[ܔ|yhS˺ y~pi`_Zj`,2X(7~!UU b~<˨Ԏ)ࡳO_@NQ J>(@^U˱}t@JDIƥ ܼZ/S^R s>wBPD{#PN1iV೜aж"EcᱤyP=yR)YR`JU̧vJ d"JB@`*e4r}-ʋ[nv|W^p=~BG" ZQP'PQ lfM O} -lW^qjCeAS:{pKGE%U1eAP/BhY;D诎)%U ]QBD.PH$@DSŦ1B=J:jɘQZmDT.ru6Dc2N4QAQ-&J{@g0_AZg"!tjŦglؽ0ndEjC"\ʀ/=Ap%Z$ NAQV *ʈg˷tU AL(!,St:]ǹ,^(@YQFǕ-cA|o"VOR2Z |wfZ:ȥݲmw/'n1+>#P}Ej>o3A%tSr\4M BF Y7Ysn÷{A0P;;,wE>hnC˿1].IENDB`PNG  IHDR DgAMA a cHRMz&u0`:pQ<PLTEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBmmmUUUNNNmmm]]]wwweeeBBBbbbLLLaaa럟VVV     hhi$%%"""!!! *++(((&''%&&011-..,,,566122/00899555 444333ddd"##9::677455!""233 !!'((&&&RRR∈IIIXXY~oop&tRNS?OϏ_g70(Po`hH X@--bKGDo0OIDAT8c`@L`Ȁ0kh 34#hkjæt5ؐYр:+;\!0Pgs`FPkaZp[ y.K+(0K. &bt';xxzyxzDԸa 0(?$4,.^Q1pp&xHHLJOIM g@fVvXFFNnb\( / 3By@%0SV^QZZYU *ab੩ڊ&P Zs ƶTDx; 3-#+-& @#![B}8@ (:'LL N"Sb:ET:_ (%LC6_\@RJZm:!SIH" Y9 ggL/'զ̜>kSd1r )+`JJȖU\:tEXtSoftwareAdobe ImageReadyqe<IENDB`PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGD pHYs  IDATXåW[LTI94(`٠iٍ4w2c dz8/1u^X&&&qY 3f8&,FtUV:`M9U߇sN_$[IꜪU&1VJ`sO<po$M]~@ݻwooߞyUeee+ 3WX듓чݸqcӌ_D%"Z$IMMM?~h 8ą0[n"ssZwMMM?H9M/ۃ/4MH45DH4t^uz1;uvvgycj/>bg.@^b=uuu=zW7 c` *KZF`_ TUUy=&g]X cTUЧ~0 IƬ>NJ~+8t||#Lseee B@0B,#~LiIC֊@ B۷oc !,oս_^:!B CCc50 rn LK MG]x)hh͚&D" K(bӧO#ȑ#Pp/K%%%+hȚf h*X-Zqr![b1;v YYpg$OiZ.Bӥ(E*T# ;,N2+%.'.wtTnEE"szfVeZ2צ!2@L2'V09j I2E<),P|TW%LMNE9VVsIrp 9$H CCr!;်Mʼn'PP0Xϭp會SSQ9''gzdtdY<bIegg9!"w؉O?(tM@ZcdEi֑i^̯lY +^Sɓi pğ0<< Ň"20"-sݡ;Reep‚7*XkiUp$8F4nҮ dHˆ z+++@noo S"Lɨ0$Ihnnݻ1=9 b/6\hia``x{{TU_t%]؈2LOMZ1Ζ0,"" \<}}}OUU`̴0}۱k/:i$L iM_]\L>HKz7s|A[|n毨(CG `NInOGG?7pݷW2vett4]y.%__@%~H@BӌYWß'0Fd𣩮v@"I%/򆆆&&&TlذJgX ?>\TTٳgp7u-4 v;wڢV׹\.žۑ+e-1bkq/^8ukZ{۰u[GG[k׮ݮJ*|b˥O^PM۹#郃Ϯ^tttr(zru_֌Z[[+VmzVfgggfdd(XLD"щ'Ōϟ֎= lױ 5ԩSodݹs'wrr2wqq1[ EQbn;RXX8g۷pa6xP @.̧> `,y?XLNIENDB`PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGDEIDATXåKl\W#~sxrOOj Ð wΑ$)q'MRk/\GrBVT.y @J c qnYSMsK½"!BZ^SX,EA I8l6͛xƝs֍T)*RbD!5RdbRt[-ָu7o&ɒbV;8nlL^gbb 0Dkj$iJĔ{=:cccaH\FG/;R7mazz)&'j"B! th |AR !%J+:̖[];عi!˵ 6lbzzzxR䵏: Jݱoʿ'9n,]~ G(b>dfJk:PJ"3 !#y7H)R"DH!nR.vp*gmq&''j cpg~o!9o&w^VE߶ϼOL>1A\0M>0 $q[@a4Iv9 R*1NjnoŹF\:>NXr=D)hZS(bRDQs.B qh0X,RTT+oV-l8V+yсF)9f5"$i!2eRcpCgH!(XR 69XkjJ)R8kxȭ!e1V,i6>e("%%u͝LijAi=dJ=Ο akMg)&3Y;p':R cК0έ9]Y ֚̊T@)T, @)A[`8pdB)ʛYtk-X[!E'$ C  k-Y䬏 %sssB 1`kYJ*'2iߺq077,gggqL`e/MӬ;C~L4;g%}_X3q'Nbg)tf8IrIZ[+1[w4Bח>tY !V;nG1 !p"=sfdqq>]~̎;N !VD(џ5i? =HͼG;$Jcmm7n"\9z{K2TK^OZ+L$5w3yczV8Nbid8x+W|}[]V#6|h@_{=V^s/Ϗ5fdQdGp#X3!Zm~7nn=zo6( c +m$3<&IBӥ2^-//g7BرWǥ˻@36YGF8')_{kB=._~fsFphC 6IR$!M juO}מk!ٍsn7'lO;Zslټei~~[Y!ջɸ.`{{+nk.K6dU`v?,0tEXtSoftwareAdobe ImageReadyqe<IENDB`MM*  P8$ `pr4pBoց#7'JeR o(Bd4>Shr|@oz#G|5O65ڴ9Nf _dҺvO E}vv \kw?7J*hX4Ď%ap1+p?FFbPgu8:6sLE1luMֶ<6;$`>,CGTo;Ut=6΄a_#PZ0wc3w;̟Ƞ7gIȏ(5 J <<+HJ)\\#Ɔ(LpI_#ńt2iZtBĬNȉl/qS)xtM"qh"$BSjIEzP'A +bx3;яX$TS1IMM<Q vkԇSgT-29^_`#Yl ׅ:| X(2oe !6f~ڂ|XȗY5o~ 7)k1 &UWhyz qJIF]郠Ese!rnb ,'xa,FǑFnL=bŕ.\"UV;/tK^ I (|!i6gPiQj7z҅#H im<}ai'aPY1z@lӺ)LBF ܈#,:@oyCdUӑ)Ղ^CF@x:< Y{vf.lqlJH5~D:M뾽Η^EH{-}G=AgH6;E jP8 c*#h@Ap[AP<҉p ˃O~BQpXOh܎` B 5nXQAMg0DP2H'p(hWwEQQ T\v9h Ő4V q aGyMTuu=#g-? Fe ǚJ 5]+l 9R΀ ZC[8uJ8es^W@@  2(12=RSiHHAdobe Photoshop CS2 Macintosh2007:07:24 11:55:10PNG  IHDR DgAMA a cHRMz&u0`:pQ<PLTE쒒—ۿ|||}}}~~~Ԝ趶풒떖賳ꙙ僄⁁㺻߂ۅ͍ʢƠË)b&tRNS?OϏ_g70(Po`hH X@--bKGDo0OIDAT8c`@L`Ȁ0kh 34#hkjæt5ؐYtЀ:+;\Ugs`:_KO+ӂxS_s Tp\h 盘(0[ B K+kwq30!NV;f&Mn&P'xy@`D 8CÀ <"2*:" T qqq NI)8H KOu 21dAn^~AaQqI)\$W**kej |u0`ZT| f0ZSҌ q!((MH]XA08=Fa"$%o?I0RjSNCSIH" Y9~3fB^rYK^JAQm9sΙ=KMQAF#w+)˩ .*l9-񁱞tEXtSoftwareAdobe ImageReadyqe<IENDB`PNG  IHDR  hgAMA a cHRMz%u0`:o_FbKGD pHYs  IDATHǭ[]gegmIfvJftH+}"ŔPRJ*!/^JHEؗJ4c%8i2If9w'qn.]o[lqcccs.2=6.v,@Oc;,Õs>b]nb1j`뿳}_#Ó{QÞѝĸjσj|0Qqm쿞ͽ4L:́dt񷃿sh_P`|Dciھir/mv߳eE00*Tq -C;_Ӯ|Pfbd*Ԑ*^61_65Slk/wٳwa?YVi] >$èu>K !N@ʼnM+^9w֢S2?UY*GܕXl#u &a hTTīDڣWSٞWr?x@$<ޅzB0 c!΁P\\{6 !2>V<>Bn0;%~M # :Z"KiW`{ <O:_ %NX1ݿM+~lc-L坥7~T7WW^ٳ 7=Lr&,rd+_Y~@u۟~@I?k^Kݙnez^Ly?rd7.*oSz~k=>_D!?# !nlۄaHR,Q(M!]Z_:[_ $$IΑC@a}E@ؗKoHN=zT\Y\B b @JP\ *7{# S{$!A +rj" U%MB6)B@(W? `UʹtLi*-\}hU{nzUպ]n]kAarݜ;ȭ->Y65὿3ոtY IENDB`PNG  IHDR DgAMA a cHRMz&u0`:pQ<PLTE쒒—ۿzzz{{{}}}|||̃~~~턄돐肂ꙙ僃|}}||}ݰͺʢƠË=&tRNS?OϏ_g70(Po`hH X@--bKGDo0OIDAT8c`@L`Ȁ0kh 34#hkjæt5ؐYtЀ:+;\Ugs`:_KO+ӂxS_sFF::\ jf::Fp&@wr]hfemVf w7\:;f&M 'gkkW7wg&P' xXIo_k?H Z`0p?PAD$ FE[EFzĺ'" `"))995-" YAə9^yP ^B(w.,,*.ɇ2AAyEeyYkU5LA j\q!(T߀ S1+hrQ,[T Z0@,QKw~qII)iήn$թ&-#3dzzNj_N5kK)(O8i j 2S^IYN 䔕DgpyUU%%UUydu[GtEXtSoftwareAdobe ImageReadyqe<IENDB`MM*  P8$ BaPd6DbP@ >+18v=`b`XmVӸ C]X T @ڣWyNu56< yg4cQB72b3 A "`@ >@47,wXGϵ[#X" (5E([0wX:}q%:y@5,1| qhrH?^IO $7=@q\g8.\(nOQ eB>hb |4,0+tL)8E $3 Dz09!攌T8(iӏl1&-- @0 0F \fK7iB gv@a <  Eϛ '/jHODdu)Lj6M  adK4(FQO%)QD< g,/86@6D/\S15G@qmsp)@S *0`ރ`{ը9.\[2XG ^nw@ 42%xFE]`4j|e feqnQ :QAH#h `LMDd~#M-!R1r1q(-2!51P`*^{@L X3PpN@hѤf@nB_S H(Px@TB"> !P @SD R PUi[А4I;inݽ3;fQH_ݙ9wgΙQ]s3 M/{u8~s#bG5$:Sy~wtdt{=7E29/uЋ\3]@z~fO'gd'ڏBZ?i7.m_6۬KT|*mPMeN1ߵcޯ0Šh{MPv'ޙHJrJ*e*dC+8F;}n! rQñJΟ?V_lcfJ jeMCډֽ AFNlj x$:ȡ\< n{M񻖫XLgsjEC^&;>? f^<;+HπJ\zu1=X@ktG7O+E4\T\~^K$EeˆŠ`,d%K:vx ʧR*MކA8f v+ 2z$C2&6 Ao}{~ǯnلFT(z͎e(Q4.ЎRX=4qka3y'MƥVEo z^jl7EBЎݦJd"hWa]+Kgp>7:%v7[k!h`,6Cg*r(_.^o2rfV牷fNl(tl``3 bS|7v2bYAVkqv量5-:ȋM;MRi6bvJRzA q=M+ɵ`"qx꽓gv$0f.]iXYM Y̷%Fv_|Dp$y𑻝a=G>\a7_[0ofyۧrKr| 0Vg^kvpn!]1`2'_n_R:E-nb秖'~–j,\wz[S" 8arY`6/ }iG tG~VÚjx=vdP swq) 둍I{ |KP8)e8})m<#.1CZ3'毴<)Dy|}dxt=)ZR.I}We>/O("~9rK*^ ׺# SXB? |c@~I!,eer=FSf9Pc @dYf@ϷVl~iޤ\Y4i'\[ }kkAJDwVbUcn# 7[woûoMS"r{ޓh,٥4ʖIENDB`UPNG  IHDR DgAMA a cHRMz&u0`:pQ<PLTE쒒—ۿzzz|||{{{}}}~~~퓔놆藗兆⃃}~~䰱ʏ͍ʢƠË&tRNS?OϏ_g70(Po`hH X@--bKGDo0OIDAT8ugW0VuA$X* Ľ{Om鍧B}4' B m%`U8AWP6L"켂Éb| K(DZ'ե$U9l$WJ),kZiB']nI "8g*&6{Z̉SX:\$k!-GntyHiņn}$gI/61߸lbrd#b H6Ei ʮl! u2Dvo(@g yv.P,S<˫\fgIǙ㽾Qu͉C\|h!'(yR<=x~XXCo !\TlT~6}ZLai|G>qYi1:Te ZfQn§߷tEXtSoftwareAdobe ImageReadyqe<IENDB`;PNG  IHDR DgAMA a cHRMz&u0`:pQ<}PLTE쒒—ۿzzz{{{}}}|||~~~턄돐萐僃≊||}䰱ʏͺʢƠËk&tRNS?OϏ_g70(Po`hH X@--bKGDo0OIDAT8uW@xE`bQV@DQQlmj&$/0̼.BoՀ8*FEU=,aۘ$s)":u"W81DDfG=Ů3  fQ -J9]~413Z9MSg43sBͲ-y>Łf}+YX0N|^XJ I*I2IRfrZYM ɮ,l4稕M5#RFVJm+P iR[^ԼSvW_DK4/R ifZP+rj;KQ3oEMf;7hیh︸|EGy?\w.uyw聯CO< >p}'C!x~y}{{}y~u HYp8wB8 ÂsF,tEXtSoftwareAdobe ImageReadyqe<IENDB`PNG  IHDR  hgAMA a cHRMz%u0`:o_FbKGD pHYs  IDATHǵ[l\WqbCVAh PEJUPEBQ)< $( x(\ (JD!mH4`ƍ@Rb7g|ދ&’~}:g}{Ζ=O}|۶}<'Ǚ2p`~kF4?U;x}wsO]H}sw;]Elʕٹʕ=/۲ sC.??szk^\ 4J _ѧ%(yuKo[HwqD!3q(4'6`q!Cg 9MDGWΝb 2֌E:6v?FJd:ˀUllqwwnq[u7 9w4x~4on~I=hk ABrM Hl H(H Ag8.WYK k1gg&/Oԧ랚 bl$9KLh0"J3œyfuTӻ0=Eg\sk/<7iML" 64㝂D[8W'lH–J79.uM9^m(xAhf%҂(xe6T1$2u@~cZ\1GYT* SR#oU'K= q)Fggg⡐S,$wN( x0`XfYpṆ^V{='xt'kkbuI+(N#B[ld#*y(&Rsol]ZLLGJ~9uB5k F5Zy%<+xm Ʈ#̾Dx]cpɳc!˂@  SRoxG#ET1Dap/p( wS 1 D6ΙCudKwuk(:0j㢂]yx#}oL]Hn0Kټ,_NޘՃ RYJΥ 겪滫@O>?ҪgKqSW&G_ΫztI`􏏌7f_̙R a=8iX}9nߕKbןۣ>94у3?Ku{wUn`lѦ}ߵ}/k獉G{Wip$J(u+;@@>??899$%%"##ABBFGG&&&GHHMNNNOODDD+,,ddd'((IJJSUUTVVUVVQSSEFF%&&CDDSTTRSSPRRKLL@@@*++/006779::455-..!!!RRR∈IIIXXY~oopgA&tRNS?OϏ_g70(Po`hH X@--bKGDo0OIDAT8uW@mJ!,GnH9F*KADr "X5%6; mytLƄ C#91MS8&y:2ՕxJKEA %ËKJ eʜg"*^"_F]rsnBTau u6Qp.DQwݬqBԈ>>dYq]ݠC xd~ZL,,~e|4K_osgeum}%bbhw'DB,Bq['aB9M>%BG*Y0)B2ʔKQ`HRsTnmFMǬ|z[S3r' LSg.klvpu 2tEXtSoftwareAdobe ImageReadyqe<IENDB` PNG  IHDR DgAMA a cHRMz&u0`:pQ<PLTEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBmmmUUUNNNmmm]]]wwweeeBBBbbbLLLaaa럟VVV...ɦ   hhi666Ď$%%"""%&&)**''' !*++(((.//566455-..eee011=>><=='((]]]122688<>>899,--())ለ!!!555 344ABBddd"##9::677$$$233 ̔:;;RRRʈIIIXXY~oop8&tRNS?OϏ_g70(Po`hH X@--bKGDo0OIDAT8c`@L`Ȁ0kh 34#hkjæt5ؐYр:+;\!0Pgs`FPkaZp[ y.K+(K. &`t';xxzyDԸ` 0(8$ )4,<"* ^1qq I)(&4H9y^`TB+ 9%e`JHʩ ohl U4@k][{KKuGNFgWDz[{z&dL̟4*6e*L>ujz挙"Sxgρ9sΛ 3A`(X ,Z BPhR` (:-_\& N"Vc_JTX_ (%VA__\@RJZm-!תIH" Y9ek׭]/'V_ad1r )+`JJȖ/itEXtSoftwareAdobe ImageReadyqe<IENDB`‰PNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGDIDATXåWMl\yo=ǎQŒ)M-U S5ՒoGu;v* g дA]ԉBIl?]7O t5f޻;|=p_Y\ُNxN   "siTjXK_ @Y"eTUKE@J0ZcB矣لs`~>`\)V24B0 !b4MBEh6676?#?1䜻…FkERAXDXD. `pF{IEhZX__*t6닛.DDWjJ%r9A!88`*U(1"< @;u Go8'Lcll ZBTFP@.eR ) RJpA n3~pO^੣3a?1j UP,}XH%z>"Q+=Ըs΍m%` #d/}aBH Xz"be`210b "hOnns>cO{Pu###V(2?|:{wsnywמqn#IcO{Qd !aKe>TA|X=D2!29kQ,iTnfQ(fOsbb8NDRσs4My^H0Q(P.WPU=1wH09T*Rs̈́rBH%Ř <2666ᬫ Y|[sB 8~q9ϑBZce0[;kb RJ\/ gBpk<#Z9)-AH k- %!4>p`'9~&6dᬃCF~Vp!)w{Z kyT"k 7sXck-ALOOܼyhc`5Y9laN1me?655`ĠN560fB)TuocI$HWZCk`jj!Μ9}ڵŕ8ƕJR)%vhZ4h=I va$tG J!j+gΜ!h…7>GqRze}7hKK OfR8#G,euOly E5|?#?y -1ZV@6Ν "jlR5fNSvGiVfo~l_6QV4J(F݆RssoQN=ƭ[OAA͈w{E> zOFthx䑯6Nzo@{Wyjah{kK#(lZ/^#]2 kΝ0^ wvNA3w:C~:{A(GϿ?oR Ϥx6REB%PK/x[D ``Ó?l6BrbRҳ^TC)tjPTVw.멙j望pwGggW;}kr~177Dt^>42տЭ[OuOݞ9,h KLx}4,wtEXtSoftwareAdobe ImageReadyqe<IENDB`jPNG  IHDR szzgAMA a cHRMz&u0`:pQ<bKGDIDATXåK\zQ c`KCc)6+Q;Hv acA c)f(DvIDbC ElOƘtOwGUu6+n?_7t;G=M_3=OA BǝsqBH`?ʑcG_VB4J2jbk-iEv_~IssnyYTFF( a1e8&":f1q`ϑcGZ߼n9wPiݨRP,) PZ#EY,v:[-pgΒGӗ!ֺ1rzQT"ZkT8`%I8X, 08={$Axj˭nyY)u5+&gllZN:BTP(1Ơ6c xcPJ!Dib=r՟lu=Bg\3q u*#}F,(uZ'9Gj-N;^;}'rO5jYe0ƠDfB,1cRbDJ)$B`HuZFZT* [2AGɧ~8f{~xv=Z^o7yUf>:JT&)ZJ1|>O.3433c?Bk r`-Z)0$ R"Jjy޽Ç/eCJ|   )O()eTֈpRrBed5/[!@I֊"B,"+.uNRA@(Hs#L.9@Ehc !CfEIkM@)T~, lI@)1 Ivlt82B)ʧY7ZljdąCN MznjxdR٥5sBIڵkiJ6ŦZCdUN ~t/XnwFH_|4'JSߺqv9=999}'$NH4!xifg I$aΜ9CjMI҄$IH&''m8|\ۙQsX.(i6Xkx`uױk.riZFmJ;2}IIBۥnj-r ߝ޺ !;~'6&dƁ0˺`-yĔ(n/lVs?˧/U/ݷ V7 B\_ j,.vh/vVvx/~wKuh̊ge{`.GN(N_^Bt `h?rwٜF Q9$O`Pn8!c8Rm?!\)U_͜s;zw}?g>l kpαrŊ7驩-BS_kf@6kU'O~J~[odV`"eSܥ|?rdMtEXtSoftwareAdobe ImageReadyqe<IENDB` ʼnPNG  IHDR szzsRGB pHYs  niTXtXML:com.adobe.xmp 2 5 72 1 72 2 32 1 32 2016:12:06 16:12:32 Pixelmator 3.6 ЩIDATX WkHY~98]L-#]wL א$j2)J ~?ւh!!mZv^%&&ͱ|S|Zف̹syoK(XHx_TmRT57LCR,XsZZ섄AAA^ڡ΁fKiiʕ+/_>ÞH9d ōBrVXQr֭7>|mddĥp븞\DŲ2}7)T%}O= .5<<ѣGVm``ૅ+++S:#Ȋ,.,,L h1fIkk5%%簾ߡ8qEM/I]'7ooǏ'x㦩i4޽!8t3B|LLL)S.Իq0oWtľjiO݌6/3߻x ڦ7o^ʆ V/_kPZr)9|L6M5>F|kdz&({[ʥKC'k֬7oNnC<⒍"qΜ9LQA9p\~]v%EEE\1cBLU]?k'etxٱc$88Xf%>>^Ξ=,܏Jx b74+`{^֯_.Q***$==]H־ٗxUxlpu7 4$ErR Cƍ)pO,p^Kvvd2YKJJ^^ՅY`dEFFJrr)֭___ill:ٶmt +\+=ꕅC1UWWcccgZۿ Ʌ ">>>cRʕ+%44Tz53q5nUwyü`l̙3%oT5<Y;)ĉi?XtL58Ɇq wZuH xřFc}܂ K|tΝ;T\\ʫrtS/6$-ܧnQyf_$'1?NNeCY ϯ ]G_dIޡCZ9RN??߯M=_=zc?ER";xT2!;v|Ϟ=͈; &QJ"el# "}a߿z:6!nT;T1RoӧOwȒJ-Xpk׮m/!sp8 )6!t@lٲY\/hʼnAԍBmFFF5n/oomIO< /((?xݻw:܎Y O6DYgMMMiJp:W_Ol1#  ar C0މVē| ۿcakIENDB`PNG  IHDR  hgAMA a cHRMz%u0`:o_FbKGD pHYs  IDATHǵ]]W{u{g&Ƙ$6-v`ATR>(BARѢH|R|QS>(S)ڨIj'i(ML2$3w;s^>dD%.?9죞Wv'~+53iLO^yz|=;[K7~K[١7_] :>ܻ}XyY t}PFv? 411y|R%%$;` Ejwd/{#QR\ ^<`ŚyAMAucӳ-4\yOX'%!Zא 594^(y !gq6+w2$׊Վ~  5o8DV20ЄТ舽@^/NhZƴ'ҳզ[Xr4S!|_L`<FS _MOWNl9Ӓ4ۦ^N+{i?B#+ Fa4@Vg4Al(F3ǿ^EW' 4IZyv.o.%uR,GC!Z8DFk|ZGυBogL>DAJK^nZHE!J5hD#i9,֊86JFЙ~7n-޵5K_g|!v\ӹ]#Ac5QP,ge VP <@o9hў \lb:l"<,WPpXz#1C8 ," PN5Zᜐ$k) &q%ckD{(س6;h8E444%I, (P]91{[2p)8 0_nhu%zC6KZgR@4p:ѻS=3[a>A@n5⁏ r;ߦڿZ[ LUIENDB`MM*  P8$ @00 I ``n܍$M'BBxA/fC>'X"||P_#ճGw1iN}54`lfE(V`ҠNIHGk!g@\@wwq"K=}[ݵ{~\Ed>4] A9:-{_<\UtJ_ B]a8- 6Ah Q\_\)|4 bj] A`(@6ԫQ^iyAI Ƞ ߔv ז& 7H႔4MuWB30f7\`c8o&D1,FXXf\X:d慨-),(}U ah!OvY<ziԂ?b,#@>S6Cq`vC!V !nؙϖ;)iX |bIkpMc}8MCK;QN\DBR*l D>111bccddd#$$FGG899)**hii!""...QRRΔ&''RRR///̈IIIXXY~oop"w&tRNS?OϏ_g70(Po`hH X@--bKGDo0OIDAT8c`@L`Ȁ0kh 34#hkjæt5ؐYр:+;\!0Pgs`FPkaZp[ y.K+B\ 2[\<\Y ܽ}|" LAp  db`ĤԴtH PAF&deAn^~JA!D$KJKs**+!"E@5pSVWRabi޾ 0v^``rvӦπ LTe9 gwO3wc`7,\x>2' A%K`β(` (:XZ. N"`_ZTX_ (%VE__\@RJZm!k֩IH" Y9äׯ[/'VoXq d1r )+`JJȖ +AtEXtSoftwareAdobe ImageReadyqe<IENDB`ӉPNG  IHDR((mgAMA a cHRMz&u0`:pQ<bKGD pHYs  ~IDATXå{U?5Lf&E›Su#FW4 *@ܵ]wٲJZ# V .,O\k 4@^$Ldɼg?Έbu{O}~?_<ǏO~o>Cc~w^/2G+bD  %Z5 5T ץonSp 7<%/ ߒC۷~7j.ݷĉ'Z!uZS QSWIqx8Ja -4-|Nouv=?CࡇzOZȻ)Gp5 oѸN;Z:8JDZ$dnxSk*RW~-Y;s~#7h\>pƳ}7T*"!5JyG,#ՠLB+5ZG a ƽ|B|:{A&FWk1í)hV,H!f(!PBFFwR)Ĝ9]~)sDepRh/\[>vmX{UᑞZۼ KJHĉżp:J>oVIoR,}GtB"kMKI$^HԹ>'W*]|w222 ?}_чj- A˸RLjvjt­P-h!&g#R455Ō (Mz(7M{}_︵ժem 몰yr}s:3k_La9UD!B[3bY\ @Xl.؈ܼdLO֟V9ʥMs1>8dGjnad>E+nx${Lvor|,@@,Y,oGT!7:'6WUW_q:TTZ ^B ^}= +/&}~_%t~k4n@zXמ5A)7VzF&3g(KadTfqR{nY9u,& ׮i Siv5}AB7aZB!pPX0 %p!kKZV䎟 ?0$MF].`,q߁v\*tC9ALOzE4myRJhVr{b LjzT?,z|i.?Њ=ׯGQӄ/JX)i(S^:Q kAO9'PƯ#Gye.ۋd_B͛/ 2?Oߎv],\\W͡PsQbBJeK;),)'_-BK(@BJ0~H66йikr7|nT[AJ%5!4l,iV={_lB0 "I P] )R┊]2,X!@JV1ۋ B,N?r3S8`|?0_*MTi&>^M$!/?O!ΪURAXMA"0! ϓ8c;pmx ? d28mH! !FF(!LTQϐ\.ţeVZ︃!h!:0kb)r9lܶkb"%U'V1O%c- +e00/ eJRL)'p]Ȏ a'&H6!ZR6)Vɔa h[7}yFNf…Ϝ)uutTΜ!xu^K!_`h*M­T ww3|,b%@ZJ[Z}Sd :nQ ϝ e@kRbacm\u]'&h *ǏSɐJ3 y7ވŨG T[+i&_;_SwбĊ儁?1 Jj6Gxޤċ !߳ӧB0ny/: ;:ʹ_)!h}ꮼ\xeB,-_O7b7 TP;1*iG %)I5=.[23>>) k񧧙8ۇǰRf8uc?!CR @9&MBxlɃyIw%ʋqa T''E ,mK꫱$<ùI,vwA`yȗ @<0 'GhPTX!z)jF 1A)$R)]CuO>9>Ěӥ8RʑɤDI!1[q]JLLY%D€b GI^T?O@?[Gƺ~եˆe|%( )16RXKh | CLR*jٚ X0QkDUBkrt $@Xddlqab޼DniFڳ}Mo?_ڬ&cCTZ,akkָ;7hj m ϜlsmF.+yp~3$5~csDX@ R( J9bh3bmdD#N;aFh+ k$H66211(uuюo?V/y+O 5k‚6JB+Q=Z1`-֚Lٙba4]VΥ\.1p9r&eRq\Z#ņa4IZo )eoN`)Yr4xfՊ/tz;vgXjUK_*`) WRuQJzSJigՒRF;uZch|kȔL8mKά[6>/ }$x}䮗SQp_*LGJH!Hlj Ɠ8VOR!!jlh3+V|a;z^y; ?;q/7#7-lnY\JĂPĄV4Vo !lźbfbr2c-Ӹ&(D=DFF T@jWz3+NuƸ766 ixg0 8\K[w/@7; MYbȁ y <hrp;\ O.* wE#<=q8O5vcJ̏ ރt:0w&zVX7"Fǵ[ B%c* A.ڸɕ| VH  D4,4@ eDKq)B*IQh7q|N{ǃrz!| (Lƒj64_ eP ;.L$3$ni8xNT@lG3ȺO?fwcFyQ涮 14`R%IwS؁M,a3P%=L05KKI5A( 6[ׂ#_ҵdw؇ؓck2@  G U?XRqm㝼TEIsB( Wllɥun^n_ZK6A`B+Ji~yy" p $<+ egNL| yIR儹(r6TBz4灮#XKYãv٬>YG8y':hd:kp!X;Ib{h&&[G1|< fpÑG 2yY; vÿ,"6)ћXOF7M\%݈:8M۴ ]GEuH[R{@u "1oi GL^y%a`wZ #\N#`VfPp,za;TcR &l;03 f^5]S| L<)No6T1l@$9@}.>Y pƉC8DDOv@r5Ppu68(%q   h2@px(12=RSiHHAdobe Photoshop CS2 Macintosh2007:07:24 11:59:41PNG  IHDR  hgAMA a cHRMz%u0`:o_FbKGD pHYs  $IDATHǵVMh~fݚHލ`؄h3k[!హ[$e!!|1$ =Yʱ%ز-yyFiF3U9lw{U |LM}^/}abrΝܹ}Ήpڵc>o6ݿe}};;;<qɓPJM%Iriuu +++h6pg\SZ-tڍ? !~kC$I.͟ RjJ)s.圿oZ֍4I/ ^xķ|ߟ}RJPJE;;;ߧ CuRT*T*z}Z)ycI cq 6^s.v9c !Ck(dRJ)sZ'ruۣanzn42Qi1@)zZ)! (ݻw铍 8kn޶I 28Ac!`s>^Pc;w 0_by_ Uy^Z cLIBR JFPId}3>2^ $NܺupA9J)!k-$AaCy}8Β9wRzA)jZ !H=CAe4Ee @(0ψfgg`nﺼg{X1,eYVF[D++-˲2rgI433^5~JX& \fI^ mJI)3bŭNpƬrT(" 2cJU!c A4]`0\1((_ $IpXV1{{{Ya0 Ѫ| RV=©SZvA{Իiuϻ2犲$Ir9 yzׄaZӧKcccor)Mwz?B8nc =!D+ Cq,Gw]v 5P;emtBk .|_sHAF🧤d;;;@RAclOF#; `园wx'u ×rǣdvdP1)Z*ό@DdC}fd4IKC0vZ1eB U-RL(>| ( 5^( bDS̥R4d2̹Z'qniϺmڽۦg9y f91] FHѻM.]~BkV{oIdHtW޹<>,ko>#MTWte|0if8MbYtⷫ*$q4w 3I? 4aw@WgNdy{lͧ

dU1UoZ}fǕ URD+ $;݊o@ tLl̺q`wݵё팎P 6 ͊[,,Eavv;+(!e$#Z'A°Ns(ޛ rʗXa#8 1 %E^kgYZzЋ?toq#h덱W8N[W] R"@k a Xgރ|3W]L"A&NwbVuc8QZ" c@*F[{>eN=IZCHzܐ T0Jbr[p\e B;RW\:|s);g{K1Q-uE\!pY!KyɋRyZC,`\uO{~@ЍyHƱm/t.Hyl>Z:wot;w;[bMJgTZ{GqU k='ܹur5ǍkSk4[aLӥ~==wn0F WaѓǛl~Oq~H9dZUWj1͗7B J)F7:Ibxa}[pgx|=@𽳷3 $[~^HPJ0eQoU.Hk}$W ',E!x`GZju$(MJPУ \ 7_pjc.39yk']Eegw---31JQ*~B200!i $q!7ZHNNNk--vIz~ߎ{ $+/;ee-5cǎI^K1= +AFw$===uYK- L1C@}5 \&er3ޠ(d{=4N0A`s-r[劵 tSpsξIshWɳC@w9J[1HxoV\_kwڵ[U0ϿimCw 4IENDB`*0*`-A>zRx $h*AC $Dh*AC $l(i>AC zPLRx ,$h-hAC  -- - -ungO -E>7 -: -4-& -`XP@ M P3W`y"0T-F{__Z26qInitResources_dtkComposerv__Z29qCleanupResources_dtkComposerv__ZSt9terminatev__ZN12_GLOBAL__N_111initializerD1Ev___cxa_atexit__ZL18qt_resource_struct__GLOBAL__sub_I_qrc_dtkComposer.cpp___cxa_begin_catch___clang_call_terminate__ZL16qt_resource_name___dso_handle__ZL16qt_resource_data__Z23qUnregisterResourceDataiPKhS0_S0___Z21qRegisterResourceDataiPKhS0_S0___ZN12_GLOBAL__N_15dummyEGCC_except_table2___gxx_personality_v0