<reponame>LazyDodo/BrickTricks
import bpy
class ShaderNodeuv_map_diamond(bpy.types.ShaderNodeCustomGroup):
    bl_name='ShaderNodeuv_map_diamond'
    bl_label='uv_map_diamond'
    bl_icon='NONE'

    def init(self, context):
        self.getNodetree(self.name + '_node_tree_v013')
        self.inputs['Vector'].default_value=[0,0,0]
        self.inputs['HAS_Vector'].default_value=0
        self.inputs['HAS_Vector'].hide=True
        self.inputs['scale'].default_value=1
        self.inputs['diamond_size'].default_value=0.2
        self.inputs['brick_width'].default_value=1
        self.inputs['brick_height'].default_value=1
        self.inputs['feather'].default_value=0.1
        self.inputs['border'].default_value=0.050000001

    def update(self):
        if self.inputs['Vector'].is_linked:
            self.inputs['HAS_Vector'].default_value=1
        else:    
            self.inputs['HAS_Vector'].default_value=0
            pass

    def value_set(self, obj, path, value):
        if '.' in path:
            path_prop, path_attr = path.rsplit('.', 1)
            prop = obj.path_resolve(path_prop)
        else:
            prop = obj
            path_attr = path
        setattr(prop, path_attr, value)

    def createNodetree(self, name) :
        self.node_tree = bpy.data.node_groups.new(name, 'ShaderNodeTree')
        #Nodes
        self.addNode('NodeGroupInput', { 'name':'GroupInput'  })
        self.addNode('NodeGroupOutput', { 'name':'GroupOutput'  })
        self.addNode('ShaderNodeTexCoord', { 'name':'Node0'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node1'  })
        self.addNode('ShaderNodeCombineRGB', { 'name':'Node2' ,'inputs[0].default_value':0 ,'inputs[1].default_value':0 ,'inputs[2].default_value':0  })
        self.addNode('ShaderNodeValue', { 'name':'Node5' ,'outputs[0].default_value':0  })
        self.addNode('ShaderNodeValue', { 'name':'Node9' ,'outputs[0].default_value':2  })
        self.addNode('ShaderNodeValue', { 'name':'Node10' ,'outputs[0].default_value':0  })
        self.addNode('ShaderNodeValue', { 'name':'Node11' ,'outputs[0].default_value':1  })
        self.addNode('ShaderNodeValue', { 'name':'Node13' ,'outputs[0].default_value':0.5  })
        self.addNode('ShaderNodeValue', { 'name':'Node14' ,'outputs[0].default_value':0  })
        self.addNode('ShaderNodeValue', { 'name':'Node15' ,'outputs[0].default_value':1.5  })
        self.addNode('ShaderNodeValue', { 'name':'Node16' ,'outputs[0].default_value':-0.5  })
        self.addNode('ShaderNodeValue', { 'name':'Node18' ,'outputs[0].default_value':1  })
        self.addNode('ShaderNodeMath', { 'name':'Node19' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node20' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMath', { 'name':'Node21' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node22' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMath', { 'name':'Node23' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node24'  })
        self.addNode('ShaderNodeMath', { 'name':'Node25' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node26' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMath', { 'name':'Node27' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node28' ,'operation':'ROUND' })
        self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node29'  })
        self.addNode('ShaderNodeMath', { 'name':'Node30' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node31' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMath', { 'name':'Node32' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node33' ,'operation':'ROUND' })
        self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node34'  })
        self.addNode('ShaderNodeMath', { 'name':'Node35' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node36' ,'operation':'MODULO' })
        self.addNode('ShaderNodeMath', { 'name':'Node37' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node38' ,'operation':'ADD' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node39'  })
        self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node40'  })
        self.addNode('ShaderNodeMath', { 'name':'Node41' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node42' ,'operation':'MODULO' })
        self.addNode('ShaderNodeMath', { 'name':'Node43' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node44' ,'operation':'ADD' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node45'  })
        self.addNode('ShaderNodeMath', { 'name':'Node46' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node47' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node48' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node49' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node50' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node51' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node52' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node53' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node54' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node55' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node56' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node57' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node58' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node59' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node60' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node61'  })
        self.addNode('ShaderNodeMath', { 'name':'Node62' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node63' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node64' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node65' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node66'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node67'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node68'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node69'  })
        self.addNode('ShaderNodeMath', { 'name':'Node70' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node71' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node72' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node73' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node74' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node75' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node76' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node77' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node78'  })
        self.addNode('ShaderNodeMath', { 'name':'Node79' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node80' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node81' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node82' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node83'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node84'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node85'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node86'  })
        self.addNode('ShaderNodeMath', { 'name':'Node87' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node88' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node89' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node90' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node91' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node92' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node93' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node94' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node95'  })
        self.addNode('ShaderNodeMath', { 'name':'Node96' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node97' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node98' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node99' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node100'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node101'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node102'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node103'  })
        self.addNode('ShaderNodeMath', { 'name':'Node104' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node105' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node106' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node107' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node108' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node109' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node110' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node111' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node112'  })
        self.addNode('ShaderNodeMath', { 'name':'Node113' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node114' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node115' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node116' ,'operation':'ADD' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node117'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node118'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node119'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node120'  })
        self.addNode('ShaderNodeMath', { 'name':'Node121' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node122' ,'operation':'ADD' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node123'  })
        self.addNode('ShaderNodeMath', { 'name':'Node124' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node125' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node126' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node127' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node128' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node129' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node130' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node131' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node132' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node133' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node134' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node135' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node136' ,'inputs[1].default_value':0.000001 ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node137' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node138' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node139' ,'inputs[1].default_value':0.999 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node140' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node141' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node142' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node143'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node144'  })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node145'  })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node146'  })
        self.addNode('ShaderNodeMath', { 'name':'Node147' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node148' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node149' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node150' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node151' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node152' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node153' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node154' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node155' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node156' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node157'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node158'  })
        self.addNode('ShaderNodeMath', { 'name':'Node159' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node160' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node161' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node162' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node163' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node164' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node165' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node166' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node167' ,'inputs[1].default_value':0.000001 ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node168' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node169' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node170' ,'inputs[1].default_value':0.999 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node171' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node172' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node173' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node174'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node175'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node176'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node177'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node178'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node179'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node180'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node181'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node182'  })
        #Sockets
        self.addSocket(False, 'NodeSocketVector', 'Vector')
        self.addSocket(False, 'NodeSocketFloatFactor', 'HAS_Vector')
        self.addSocket(False, 'NodeSocketFloat', 'scale')
        self.addSocket(False, 'NodeSocketFloat', 'diamond_size')
        self.addSocket(False, 'NodeSocketFloat', 'brick_width')
        self.addSocket(False, 'NodeSocketFloat', 'brick_height')
        self.addSocket(False, 'NodeSocketFloat', 'feather')
        self.addSocket(False, 'NodeSocketFloat', 'border')
        self.addSocket(True, 'NodeSocketVector', 'UV')
        self.addSocket(True, 'NodeSocketVector', 'CellID')
        self.addSocket(True, 'NodeSocketFloat', 'Height')
        self.addSocket(True, 'NodeSocketFloat', 'TileMask')
        self.addSocket(True, 'NodeSocketFloat', 'BorderMask')
        self.addSocket(True, 'NodeSocketFloat', 'BrickWidth')
        self.addSocket(True, 'NodeSocketFloat', 'BrickHeight')
        #Links
        self.innerLink('nodes["GroupInput"].outputs[1]', 'nodes["Node1"].inputs[0]')
        self.innerLink('nodes["Node0"].outputs[3]', 'nodes["Node1"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[0]', 'nodes["Node1"].inputs[2]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node19"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node19"].inputs[1]')
        self.innerLink('nodes["Node19"].outputs[0]', 'nodes["Node20"].inputs[0]')
        self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node20"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[3]', 'nodes["Node21"].inputs[0]')
        self.innerLink('nodes["Node20"].outputs[0]', 'nodes["Node21"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[7]', 'nodes["Node22"].inputs[0]')
        self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node22"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[6]', 'nodes["Node23"].inputs[0]')
        self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node23"].inputs[1]')
        self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node24"].inputs[0]')
        self.innerLink('nodes["Node24"].outputs[0]', 'nodes["Node25"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node25"].inputs[1]')
        self.innerLink('nodes["Node25"].outputs[0]', 'nodes["Node26"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node26"].inputs[1]')
        self.innerLink('nodes["Node26"].outputs[0]', 'nodes["Node27"].inputs[0]')
        self.innerLink('nodes["Node27"].outputs[0]', 'nodes["Node28"].inputs[0]')
        self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node29"].inputs[0]')
        self.innerLink('nodes["Node29"].outputs[1]', 'nodes["Node30"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node30"].inputs[1]')
        self.innerLink('nodes["Node30"].outputs[0]', 'nodes["Node31"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node31"].inputs[1]')
        self.innerLink('nodes["Node31"].outputs[0]', 'nodes["Node32"].inputs[0]')
        self.innerLink('nodes["Node32"].outputs[0]', 'nodes["Node33"].inputs[0]')
        self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node34"].inputs[0]')
        self.innerLink('nodes["Node34"].outputs[0]', 'nodes["Node35"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node35"].inputs[1]')
        self.innerLink('nodes["Node35"].outputs[0]', 'nodes["Node36"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node36"].inputs[1]')
        self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node37"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node37"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node38"].inputs[0]')
        self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node38"].inputs[1]')
        self.innerLink('nodes["Node37"].outputs[0]', 'nodes["Node39"].inputs[0]')
        self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node39"].inputs[1]')
        self.innerLink('nodes["Node38"].outputs[0]', 'nodes["Node39"].inputs[2]')
        self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node40"].inputs[0]')
        self.innerLink('nodes["Node40"].outputs[1]', 'nodes["Node41"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node41"].inputs[1]')
        self.innerLink('nodes["Node41"].outputs[0]', 'nodes["Node42"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node42"].inputs[1]')
        self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node43"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node43"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node44"].inputs[0]')
        self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node44"].inputs[1]')
        self.innerLink('nodes["Node43"].outputs[0]', 'nodes["Node45"].inputs[0]')
        self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node45"].inputs[1]')
        self.innerLink('nodes["Node44"].outputs[0]', 'nodes["Node45"].inputs[2]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node46"].inputs[0]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node46"].inputs[1]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node47"].inputs[0]')
        self.innerLink('nodes["Node46"].outputs[0]', 'nodes["Node47"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node48"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node48"].inputs[1]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node49"].inputs[0]')
        self.innerLink('nodes["Node48"].outputs[0]', 'nodes["Node49"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node50"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node50"].inputs[1]')
        self.innerLink('nodes["Node50"].outputs[0]', 'nodes["Node51"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node51"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node52"].inputs[0]')
        self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node52"].inputs[1]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node53"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node53"].inputs[1]')
        self.innerLink('nodes["Node53"].outputs[0]', 'nodes["Node54"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node54"].inputs[1]')
        self.innerLink('nodes["Node54"].outputs[0]', 'nodes["Node55"].inputs[0]')
        self.innerLink('nodes["Node55"].outputs[0]', 'nodes["Node56"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node57"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node57"].inputs[1]')
        self.innerLink('nodes["Node57"].outputs[0]', 'nodes["Node58"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node58"].inputs[1]')
        self.innerLink('nodes["Node58"].outputs[0]', 'nodes["Node59"].inputs[0]')
        self.innerLink('nodes["Node59"].outputs[0]', 'nodes["Node60"].inputs[0]')
        self.innerLink('nodes["Node56"].outputs[0]', 'nodes["Node61"].inputs[0]')
        self.innerLink('nodes["Node56"].outputs[0]', 'nodes["Node61"].inputs[1]')
        self.innerLink('nodes["Node60"].outputs[0]', 'nodes["Node61"].inputs[2]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node62"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node62"].inputs[1]')
        self.innerLink('nodes["Node62"].outputs[0]', 'nodes["Node63"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node63"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node64"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node64"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node65"].inputs[0]')
        self.innerLink('nodes["Node64"].outputs[0]', 'nodes["Node65"].inputs[1]')
        self.innerLink('nodes["Node63"].outputs[0]', 'nodes["Node66"].inputs[0]')
        self.innerLink('nodes["Node65"].outputs[0]', 'nodes["Node66"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node66"].inputs[2]')
        self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node67"].inputs[0]')
        self.innerLink('nodes["Node2"].outputs[0]', 'nodes["Node67"].inputs[1]')
        self.innerLink('nodes["Node66"].outputs[0]', 'nodes["Node67"].inputs[2]')
        self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node68"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node68"].inputs[1]')
        self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node68"].inputs[2]')
        self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node69"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node69"].inputs[1]')
        self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node69"].inputs[2]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node70"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node70"].inputs[1]')
        self.innerLink('nodes["Node70"].outputs[0]', 'nodes["Node71"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node71"].inputs[1]')
        self.innerLink('nodes["Node71"].outputs[0]', 'nodes["Node72"].inputs[0]')
        self.innerLink('nodes["Node72"].outputs[0]', 'nodes["Node73"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node74"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node74"].inputs[1]')
        self.innerLink('nodes["Node74"].outputs[0]', 'nodes["Node75"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node75"].inputs[1]')
        self.innerLink('nodes["Node75"].outputs[0]', 'nodes["Node76"].inputs[0]')
        self.innerLink('nodes["Node76"].outputs[0]', 'nodes["Node77"].inputs[0]')
        self.innerLink('nodes["Node73"].outputs[0]', 'nodes["Node78"].inputs[0]')
        self.innerLink('nodes["Node73"].outputs[0]', 'nodes["Node78"].inputs[1]')
        self.innerLink('nodes["Node77"].outputs[0]', 'nodes["Node78"].inputs[2]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node79"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node79"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node80"].inputs[0]')
        self.innerLink('nodes["Node79"].outputs[0]', 'nodes["Node80"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node81"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node81"].inputs[1]')
        self.innerLink('nodes["Node81"].outputs[0]', 'nodes["Node82"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node82"].inputs[1]')
        self.innerLink('nodes["Node80"].outputs[0]', 'nodes["Node83"].inputs[0]')
        self.innerLink('nodes["Node82"].outputs[0]', 'nodes["Node83"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node83"].inputs[2]')
        self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node84"].inputs[0]')
        self.innerLink('nodes["Node67"].outputs[0]', 'nodes["Node84"].inputs[1]')
        self.innerLink('nodes["Node83"].outputs[0]', 'nodes["Node84"].inputs[2]')
        self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node85"].inputs[0]')
        self.innerLink('nodes["Node68"].outputs[0]', 'nodes["Node85"].inputs[1]')
        self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node85"].inputs[2]')
        self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node86"].inputs[0]')
        self.innerLink('nodes["Node69"].outputs[0]', 'nodes["Node86"].inputs[1]')
        self.innerLink('nodes["Node15"].outputs[0]', 'nodes["Node86"].inputs[2]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node87"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node87"].inputs[1]')
        self.innerLink('nodes["Node87"].outputs[0]', 'nodes["Node88"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node88"].inputs[1]')
        self.innerLink('nodes["Node88"].outputs[0]', 'nodes["Node89"].inputs[0]')
        self.innerLink('nodes["Node89"].outputs[0]', 'nodes["Node90"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node91"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node91"].inputs[1]')
        self.innerLink('nodes["Node91"].outputs[0]', 'nodes["Node92"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node92"].inputs[1]')
        self.innerLink('nodes["Node92"].outputs[0]', 'nodes["Node93"].inputs[0]')
        self.innerLink('nodes["Node93"].outputs[0]', 'nodes["Node94"].inputs[0]')
        self.innerLink('nodes["Node90"].outputs[0]', 'nodes["Node95"].inputs[0]')
        self.innerLink('nodes["Node90"].outputs[0]', 'nodes["Node95"].inputs[1]')
        self.innerLink('nodes["Node94"].outputs[0]', 'nodes["Node95"].inputs[2]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node96"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node96"].inputs[1]')
        self.innerLink('nodes["Node96"].outputs[0]', 'nodes["Node97"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node97"].inputs[1]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node98"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node98"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node99"].inputs[0]')
        self.innerLink('nodes["Node98"].outputs[0]', 'nodes["Node99"].inputs[1]')
        self.innerLink('nodes["Node97"].outputs[0]', 'nodes["Node100"].inputs[0]')
        self.innerLink('nodes["Node99"].outputs[0]', 'nodes["Node100"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node100"].inputs[2]')
        self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node101"].inputs[0]')
        self.innerLink('nodes["Node84"].outputs[0]', 'nodes["Node101"].inputs[1]')
        self.innerLink('nodes["Node100"].outputs[0]', 'nodes["Node101"].inputs[2]')
        self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node102"].inputs[0]')
        self.innerLink('nodes["Node85"].outputs[0]', 'nodes["Node102"].inputs[1]')
        self.innerLink('nodes["Node16"].outputs[0]', 'nodes["Node102"].inputs[2]')
        self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node103"].inputs[0]')
        self.innerLink('nodes["Node86"].outputs[0]', 'nodes["Node103"].inputs[1]')
        self.innerLink('nodes["Node15"].outputs[0]', 'nodes["Node103"].inputs[2]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node104"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node104"].inputs[1]')
        self.innerLink('nodes["Node104"].outputs[0]', 'nodes["Node105"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node105"].inputs[1]')
        self.innerLink('nodes["Node105"].outputs[0]', 'nodes["Node106"].inputs[0]')
        self.innerLink('nodes["Node106"].outputs[0]', 'nodes["Node107"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node108"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node108"].inputs[1]')
        self.innerLink('nodes["Node108"].outputs[0]', 'nodes["Node109"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node109"].inputs[1]')
        self.innerLink('nodes["Node109"].outputs[0]', 'nodes["Node110"].inputs[0]')
        self.innerLink('nodes["Node110"].outputs[0]', 'nodes["Node111"].inputs[0]')
        self.innerLink('nodes["Node107"].outputs[0]', 'nodes["Node112"].inputs[0]')
        self.innerLink('nodes["Node107"].outputs[0]', 'nodes["Node112"].inputs[1]')
        self.innerLink('nodes["Node111"].outputs[0]', 'nodes["Node112"].inputs[2]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node113"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node113"].inputs[1]')
        self.innerLink('nodes["Node113"].outputs[0]', 'nodes["Node114"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node114"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node115"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node115"].inputs[1]')
        self.innerLink('nodes["Node115"].outputs[0]', 'nodes["Node116"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node116"].inputs[1]')
        self.innerLink('nodes["Node114"].outputs[0]', 'nodes["Node117"].inputs[0]')
        self.innerLink('nodes["Node116"].outputs[0]', 'nodes["Node117"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node117"].inputs[2]')
        self.innerLink('nodes["Node112"].outputs[0]', 'nodes["Node118"].inputs[0]')
        self.innerLink('nodes["Node101"].outputs[0]', 'nodes["Node118"].inputs[1]')
        self.innerLink('nodes["Node117"].outputs[0]', 'nodes["Node118"].inputs[2]')
        self.innerLink('nodes["Node112"].outputs[0]', 'nodes["Node119"].inputs[0]')
        self.innerLink('nodes["Node102"].outputs[0]', 'nodes["Node119"].inputs[1]')
        self.innerLink('nodes["Node16"].outputs[0]', 'nodes["Node119"].inputs[2]')
        self.innerLink('nodes["Node112"].outputs[0]', 'nodes["Node120"].inputs[0]')
        self.innerLink('nodes["Node103"].outputs[0]', 'nodes["Node120"].inputs[1]')
        self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node120"].inputs[2]')
        self.innerLink('nodes["Node28"].outputs[0]', 'nodes["Node121"].inputs[0]')
        self.innerLink('nodes["Node119"].outputs[0]', 'nodes["Node121"].inputs[1]')
        self.innerLink('nodes["Node33"].outputs[0]', 'nodes["Node122"].inputs[0]')
        self.innerLink('nodes["Node120"].outputs[0]', 'nodes["Node122"].inputs[1]')
        self.innerLink('nodes["Node121"].outputs[0]', 'nodes["Node123"].inputs[0]')
        self.innerLink('nodes["Node122"].outputs[0]', 'nodes["Node123"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node123"].inputs[2]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node124"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node124"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node125"].inputs[0]')
        self.innerLink('nodes["Node124"].outputs[0]', 'nodes["Node125"].inputs[1]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node126"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node126"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node127"].inputs[0]')
        self.innerLink('nodes["Node126"].outputs[0]', 'nodes["Node127"].inputs[1]')
        self.innerLink('nodes["Node125"].outputs[0]', 'nodes["Node128"].inputs[0]')
        self.innerLink('nodes["Node127"].outputs[0]', 'nodes["Node128"].inputs[1]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node129"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node129"].inputs[1]')
        self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node130"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node130"].inputs[1]')
        self.innerLink('nodes["Node23"].outputs[0]', 'nodes["Node131"].inputs[0]')
        self.innerLink('nodes["Node130"].outputs[0]', 'nodes["Node131"].inputs[1]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node132"].inputs[0]')
        self.innerLink('nodes["Node131"].outputs[0]', 'nodes["Node132"].inputs[1]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node133"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node133"].inputs[1]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node134"].inputs[0]')
        self.innerLink('nodes["Node132"].outputs[0]', 'nodes["Node134"].inputs[1]')
        self.innerLink('nodes["Node134"].outputs[0]', 'nodes["Node135"].inputs[0]')
        self.innerLink('nodes["Node135"].outputs[0]', 'nodes["Node136"].inputs[0]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node137"].inputs[0]')
        self.innerLink('nodes["Node132"].outputs[0]', 'nodes["Node137"].inputs[1]')
        self.innerLink('nodes["Node136"].outputs[0]', 'nodes["Node138"].inputs[0]')
        self.innerLink('nodes["Node137"].outputs[0]', 'nodes["Node138"].inputs[1]')
        self.innerLink('nodes["Node138"].outputs[0]', 'nodes["Node139"].inputs[0]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node140"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node140"].inputs[1]')
        self.innerLink('nodes["Node132"].outputs[0]', 'nodes["Node141"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node141"].inputs[1]')
        self.innerLink('nodes["Node140"].outputs[0]', 'nodes["Node142"].inputs[0]')
        self.innerLink('nodes["Node141"].outputs[0]', 'nodes["Node142"].inputs[1]')
        self.innerLink('nodes["Node139"].outputs[0]', 'nodes["Node143"].inputs[0]')
        self.innerLink('nodes["Node142"].outputs[0]', 'nodes["Node143"].inputs[1]')
        self.innerLink('nodes["Node18"].outputs[0]', 'nodes["Node143"].inputs[2]')
        self.innerLink('nodes["Node133"].outputs[0]', 'nodes["Node144"].inputs[0]')
        self.innerLink('nodes["Node143"].outputs[0]', 'nodes["Node144"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node144"].inputs[2]')
        self.innerLink('nodes["Node28"].outputs[0]', 'nodes["Node145"].inputs[0]')
        self.innerLink('nodes["Node33"].outputs[0]', 'nodes["Node145"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node145"].inputs[2]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node146"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node146"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node146"].inputs[2]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node147"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node147"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node148"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node148"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node149"].inputs[0]')
        self.innerLink('nodes["Node148"].outputs[0]', 'nodes["Node149"].inputs[1]')
        self.innerLink('nodes["Node149"].outputs[0]', 'nodes["Node150"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node150"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node151"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node151"].inputs[1]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node152"].inputs[0]')
        self.innerLink('nodes["Node151"].outputs[0]', 'nodes["Node152"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node153"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node153"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node154"].inputs[0]')
        self.innerLink('nodes["Node153"].outputs[0]', 'nodes["Node154"].inputs[1]')
        self.innerLink('nodes["Node154"].outputs[0]', 'nodes["Node155"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node155"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node156"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node156"].inputs[1]')
        self.innerLink('nodes["Node152"].outputs[0]', 'nodes["Node157"].inputs[0]')
        self.innerLink('nodes["Node156"].outputs[0]', 'nodes["Node157"].inputs[1]')
        self.innerLink('nodes["Node155"].outputs[0]', 'nodes["Node157"].inputs[2]')
        self.innerLink('nodes["Node147"].outputs[0]', 'nodes["Node158"].inputs[0]')
        self.innerLink('nodes["Node157"].outputs[0]', 'nodes["Node158"].inputs[1]')
        self.innerLink('nodes["Node150"].outputs[0]', 'nodes["Node158"].inputs[2]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node159"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node159"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node160"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node160"].inputs[1]')
        self.innerLink('nodes["Node160"].outputs[0]', 'nodes["Node161"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node161"].inputs[1]')
        self.innerLink('nodes["Node23"].outputs[0]', 'nodes["Node162"].inputs[0]')
        self.innerLink('nodes["Node161"].outputs[0]', 'nodes["Node162"].inputs[1]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node163"].inputs[0]')
        self.innerLink('nodes["Node162"].outputs[0]', 'nodes["Node163"].inputs[1]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node164"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node164"].inputs[1]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node165"].inputs[0]')
        self.innerLink('nodes["Node163"].outputs[0]', 'nodes["Node165"].inputs[1]')
        self.innerLink('nodes["Node165"].outputs[0]', 'nodes["Node166"].inputs[0]')
        self.innerLink('nodes["Node166"].outputs[0]', 'nodes["Node167"].inputs[0]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node168"].inputs[0]')
        self.innerLink('nodes["Node163"].outputs[0]', 'nodes["Node168"].inputs[1]')
        self.innerLink('nodes["Node167"].outputs[0]', 'nodes["Node169"].inputs[0]')
        self.innerLink('nodes["Node168"].outputs[0]', 'nodes["Node169"].inputs[1]')
        self.innerLink('nodes["Node169"].outputs[0]', 'nodes["Node170"].inputs[0]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node171"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node171"].inputs[1]')
        self.innerLink('nodes["Node163"].outputs[0]', 'nodes["Node172"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node172"].inputs[1]')
        self.innerLink('nodes["Node171"].outputs[0]', 'nodes["Node173"].inputs[0]')
        self.innerLink('nodes["Node172"].outputs[0]', 'nodes["Node173"].inputs[1]')
        self.innerLink('nodes["Node170"].outputs[0]', 'nodes["Node174"].inputs[0]')
        self.innerLink('nodes["Node173"].outputs[0]', 'nodes["Node174"].inputs[1]')
        self.innerLink('nodes["Node18"].outputs[0]', 'nodes["Node174"].inputs[2]')
        self.innerLink('nodes["Node164"].outputs[0]', 'nodes["Node175"].inputs[0]')
        self.innerLink('nodes["Node174"].outputs[0]', 'nodes["Node175"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node175"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node176"].inputs[0]')
        self.innerLink('nodes["Node159"].outputs[0]', 'nodes["Node176"].inputs[1]')
        self.innerLink('nodes["Node129"].outputs[0]', 'nodes["Node176"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node177"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node177"].inputs[1]')
        self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node177"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node178"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node178"].inputs[1]')
        self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node178"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node179"].inputs[0]')
        self.innerLink('nodes["Node145"].outputs[0]', 'nodes["Node179"].inputs[1]')
        self.innerLink('nodes["Node123"].outputs[0]', 'nodes["Node179"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node180"].inputs[0]')
        self.innerLink('nodes["Node175"].outputs[0]', 'nodes["Node180"].inputs[1]')
        self.innerLink('nodes["Node144"].outputs[0]', 'nodes["Node180"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node181"].inputs[0]')
        self.innerLink('nodes["Node5"].outputs[0]', 'nodes["Node181"].inputs[1]')
        self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node181"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node182"].inputs[0]')
        self.innerLink('nodes["Node146"].outputs[0]', 'nodes["Node182"].inputs[1]')
        self.innerLink('nodes["Node118"].outputs[0]', 'nodes["Node182"].inputs[2]')
        self.innerLink('nodes["Node182"].outputs[0]', 'nodes["GroupOutput"].inputs[0]')
        self.innerLink('nodes["Node179"].outputs[0]', 'nodes["GroupOutput"].inputs[1]')
        self.innerLink('nodes["Node180"].outputs[0]', 'nodes["GroupOutput"].inputs[2]')
        self.innerLink('nodes["Node181"].outputs[0]', 'nodes["GroupOutput"].inputs[3]')
        self.innerLink('nodes["Node176"].outputs[0]', 'nodes["GroupOutput"].inputs[4]')
        self.innerLink('nodes["Node178"].outputs[0]', 'nodes["GroupOutput"].inputs[5]')
        self.innerLink('nodes["Node177"].outputs[0]', 'nodes["GroupOutput"].inputs[6]')
    def getNodetree(self, name):
        if bpy.data.node_groups.find(name)==-1:
            self.createNodetree(name)
        else:
            self.node_tree=bpy.data.node_groups[name]
                   
    def addSocket(self, is_output, sockettype, name):
        #for now duplicated socket names are not allowed
        if is_output==True:
            if self.node_tree.nodes['GroupOutput'].inputs.find(name)==-1:
                socket=self.node_tree.outputs.new(sockettype, name)
        elif is_output==False:
            if self.node_tree.nodes['GroupInput'].outputs.find(name)==-1:
                socket=self.node_tree.inputs.new(sockettype, name)
        return socket
       
    def addNode(self, nodetype, attrs):
        node=self.node_tree.nodes.new(nodetype)
        for attr in attrs:
            self.value_set(node, attr, attrs[attr])
        return node
   
    def getNode(self, nodename):
        if self.node_tree.nodes.find(nodename)>-1:
            return self.node_tree.nodes[nodename]
        return None
   
    def innerLink(self, socketin, socketout):
        SI=self.node_tree.path_resolve(socketin)
        SO=self.node_tree.path_resolve(socketout)
        self.node_tree.links.new(SI, SO)
       
    def free(self):
        if self.node_tree.users==1:
            bpy.data.node_groups.remove(self.node_tree, do_unlink=True)
 
 
 

import bpy
class ShaderNodeuv_map_diamond(bpy.types.ShaderNodeCustomGroup):
    bl_name='ShaderNodeuv_map_diamond'
    bl_label='uv_map_diamond'
    bl_icon='NONE'

    def init(self, context):
        self.getNodetree(self.name + '_node_tree_v013')
        self.inputs['Vector'].default_value=[0,0,0]
        self.inputs['HAS_Vector'].default_value=0
        self.inputs['HAS_Vector'].hide=True
        self.inputs['scale'].default_value=1
        self.inputs['diamond_size'].default_value=0.2
        self.inputs['brick_width'].default_value=1
        self.inputs['brick_height'].default_value=1
        self.inputs['feather'].default_value=0.1
        self.inputs['border'].default_value=0.050000001

    def update(self):
        if self.inputs['Vector'].is_linked:
            self.inputs['HAS_Vector'].default_value=1
        else:    
            self.inputs['HAS_Vector'].default_value=0
            pass

    def value_set(self, obj, path, value):
        if '.' in path:
            path_prop, path_attr = path.rsplit('.', 1)
            prop = obj.path_resolve(path_prop)
        else:
            prop = obj
            path_attr = path
        setattr(prop, path_attr, value)

    def createNodetree(self, name) :
        self.node_tree = bpy.data.node_groups.new(name, 'ShaderNodeTree')
        #Nodes
        self.addNode('NodeGroupInput', { 'name':'GroupInput'  })
        self.addNode('NodeGroupOutput', { 'name':'GroupOutput'  })
        self.addNode('ShaderNodeTexCoord', { 'name':'Node0'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node1'  })
        self.addNode('ShaderNodeCombineRGB', { 'name':'Node2' ,'inputs[0].default_value':0 ,'inputs[1].default_value':0 ,'inputs[2].default_value':0  })
        self.addNode('ShaderNodeValue', { 'name':'Node5' ,'outputs[0].default_value':0  })
        self.addNode('ShaderNodeValue', { 'name':'Node9' ,'outputs[0].default_value':2  })
        self.addNode('ShaderNodeValue', { 'name':'Node10' ,'outputs[0].default_value':0  })
        self.addNode('ShaderNodeValue', { 'name':'Node11' ,'outputs[0].default_value':1  })
        self.addNode('ShaderNodeValue', { 'name':'Node13' ,'outputs[0].default_value':0.5  })
        self.addNode('ShaderNodeValue', { 'name':'Node14' ,'outputs[0].default_value':0  })
        self.addNode('ShaderNodeValue', { 'name':'Node15' ,'outputs[0].default_value':1.5  })
        self.addNode('ShaderNodeValue', { 'name':'Node16' ,'outputs[0].default_value':-0.5  })
        self.addNode('ShaderNodeValue', { 'name':'Node18' ,'outputs[0].default_value':1  })
        self.addNode('ShaderNodeMath', { 'name':'Node19' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node20' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMath', { 'name':'Node21' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node22' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMath', { 'name':'Node23' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node24'  })
        self.addNode('ShaderNodeMath', { 'name':'Node25' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node26' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMath', { 'name':'Node27' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node28' ,'operation':'ROUND' })
        self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node29'  })
        self.addNode('ShaderNodeMath', { 'name':'Node30' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node31' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMath', { 'name':'Node32' ,'inputs[1].default_value':0.5 ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node33' ,'operation':'ROUND' })
        self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node34'  })
        self.addNode('ShaderNodeMath', { 'name':'Node35' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node36' ,'operation':'MODULO' })
        self.addNode('ShaderNodeMath', { 'name':'Node37' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node38' ,'operation':'ADD' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node39'  })
        self.addNode('ShaderNodeSeparateXYZ', { 'name':'Node40'  })
        self.addNode('ShaderNodeMath', { 'name':'Node41' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node42' ,'operation':'MODULO' })
        self.addNode('ShaderNodeMath', { 'name':'Node43' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node44' ,'operation':'ADD' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node45'  })
        self.addNode('ShaderNodeMath', { 'name':'Node46' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node47' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node48' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node49' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node50' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node51' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node52' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node53' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node54' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node55' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node56' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node57' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node58' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node59' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node60' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node61'  })
        self.addNode('ShaderNodeMath', { 'name':'Node62' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node63' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node64' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node65' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node66'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node67'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node68'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node69'  })
        self.addNode('ShaderNodeMath', { 'name':'Node70' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node71' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node72' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node73' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node74' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node75' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node76' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node77' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node78'  })
        self.addNode('ShaderNodeMath', { 'name':'Node79' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node80' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node81' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node82' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node83'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node84'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node85'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node86'  })
        self.addNode('ShaderNodeMath', { 'name':'Node87' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node88' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node89' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node90' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node91' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node92' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node93' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node94' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node95'  })
        self.addNode('ShaderNodeMath', { 'name':'Node96' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node97' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node98' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node99' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node100'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node101'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node102'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node103'  })
        self.addNode('ShaderNodeMath', { 'name':'Node104' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node105' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node106' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node107' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node108' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node109' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node110' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node111' ,'inputs[1].default_value':0.000001 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node112'  })
        self.addNode('ShaderNodeMath', { 'name':'Node113' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node114' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node115' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node116' ,'operation':'ADD' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node117'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node118'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node119'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node120'  })
        self.addNode('ShaderNodeMath', { 'name':'Node121' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node122' ,'operation':'ADD' })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node123'  })
        self.addNode('ShaderNodeMath', { 'name':'Node124' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node125' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node126' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node127' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node128' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node129' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node130' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node131' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node132' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node133' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node134' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node135' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node136' ,'inputs[1].default_value':0.000001 ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node137' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node138' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node139' ,'inputs[1].default_value':0.999 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node140' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node141' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node142' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node143'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node144'  })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node145'  })
        self.addNode('ShaderNodeCombineXYZ', { 'name':'Node146'  })
        self.addNode('ShaderNodeMath', { 'name':'Node147' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node148' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node149' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node150' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node151' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node152' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node153' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node154' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node155' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node156' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node157'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node158'  })
        self.addNode('ShaderNodeMath', { 'name':'Node159' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node160' ,'operation':'MINIMUM' })
        self.addNode('ShaderNodeMath', { 'name':'Node161' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node162' ,'operation':'MULTIPLY' })
        self.addNode('ShaderNodeMath', { 'name':'Node163' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node164' ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node165' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node166' ,'operation':'ABSOLUTE' })
        self.addNode('ShaderNodeMath', { 'name':'Node167' ,'inputs[1].default_value':0.000001 ,'operation':'LESS_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node168' ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node169' ,'operation':'ADD' })
        self.addNode('ShaderNodeMath', { 'name':'Node170' ,'inputs[1].default_value':0.999 ,'operation':'GREATER_THAN' })
        self.addNode('ShaderNodeMath', { 'name':'Node171' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node172' ,'operation':'SUBTRACT' })
        self.addNode('ShaderNodeMath', { 'name':'Node173' ,'operation':'DIVIDE' })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node174'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node175'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node176'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node177'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node178'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node179'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node180'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node181'  })
        self.addNode('ShaderNodeMixRGB', { 'name':'Node182'  })
        #Sockets
        self.addSocket(False, 'NodeSocketVector', 'Vector')
        self.addSocket(False, 'NodeSocketFloatFactor', 'HAS_Vector')
        self.addSocket(False, 'NodeSocketFloat', 'scale')
        self.addSocket(False, 'NodeSocketFloat', 'diamond_size')
        self.addSocket(False, 'NodeSocketFloat', 'brick_width')
        self.addSocket(False, 'NodeSocketFloat', 'brick_height')
        self.addSocket(False, 'NodeSocketFloat', 'feather')
        self.addSocket(False, 'NodeSocketFloat', 'border')
        self.addSocket(True, 'NodeSocketVector', 'UV')
        self.addSocket(True, 'NodeSocketVector', 'CellID')
        self.addSocket(True, 'NodeSocketFloat', 'Height')
        self.addSocket(True, 'NodeSocketFloat', 'TileMask')
        self.addSocket(True, 'NodeSocketFloat', 'BorderMask')
        self.addSocket(True, 'NodeSocketFloat', 'BrickWidth')
        self.addSocket(True, 'NodeSocketFloat', 'BrickHeight')
        #Links
        self.innerLink('nodes["GroupInput"].outputs[1]', 'nodes["Node1"].inputs[0]')
        self.innerLink('nodes["Node0"].outputs[3]', 'nodes["Node1"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[0]', 'nodes["Node1"].inputs[2]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node19"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node19"].inputs[1]')
        self.innerLink('nodes["Node19"].outputs[0]', 'nodes["Node20"].inputs[0]')
        self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node20"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[3]', 'nodes["Node21"].inputs[0]')
        self.innerLink('nodes["Node20"].outputs[0]', 'nodes["Node21"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[7]', 'nodes["Node22"].inputs[0]')
        self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node22"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[6]', 'nodes["Node23"].inputs[0]')
        self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node23"].inputs[1]')
        self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node24"].inputs[0]')
        self.innerLink('nodes["Node24"].outputs[0]', 'nodes["Node25"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node25"].inputs[1]')
        self.innerLink('nodes["Node25"].outputs[0]', 'nodes["Node26"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node26"].inputs[1]')
        self.innerLink('nodes["Node26"].outputs[0]', 'nodes["Node27"].inputs[0]')
        self.innerLink('nodes["Node27"].outputs[0]', 'nodes["Node28"].inputs[0]')
        self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node29"].inputs[0]')
        self.innerLink('nodes["Node29"].outputs[1]', 'nodes["Node30"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node30"].inputs[1]')
        self.innerLink('nodes["Node30"].outputs[0]', 'nodes["Node31"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node31"].inputs[1]')
        self.innerLink('nodes["Node31"].outputs[0]', 'nodes["Node32"].inputs[0]')
        self.innerLink('nodes["Node32"].outputs[0]', 'nodes["Node33"].inputs[0]')
        self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node34"].inputs[0]')
        self.innerLink('nodes["Node34"].outputs[0]', 'nodes["Node35"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node35"].inputs[1]')
        self.innerLink('nodes["Node35"].outputs[0]', 'nodes["Node36"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node36"].inputs[1]')
        self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node37"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node37"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node38"].inputs[0]')
        self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node38"].inputs[1]')
        self.innerLink('nodes["Node37"].outputs[0]', 'nodes["Node39"].inputs[0]')
        self.innerLink('nodes["Node36"].outputs[0]', 'nodes["Node39"].inputs[1]')
        self.innerLink('nodes["Node38"].outputs[0]', 'nodes["Node39"].inputs[2]')
        self.innerLink('nodes["Node1"].outputs[0]', 'nodes["Node40"].inputs[0]')
        self.innerLink('nodes["Node40"].outputs[1]', 'nodes["Node41"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[2]', 'nodes["Node41"].inputs[1]')
        self.innerLink('nodes["Node41"].outputs[0]', 'nodes["Node42"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node42"].inputs[1]')
        self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node43"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node43"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node44"].inputs[0]')
        self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node44"].inputs[1]')
        self.innerLink('nodes["Node43"].outputs[0]', 'nodes["Node45"].inputs[0]')
        self.innerLink('nodes["Node42"].outputs[0]', 'nodes["Node45"].inputs[1]')
        self.innerLink('nodes["Node44"].outputs[0]', 'nodes["Node45"].inputs[2]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node46"].inputs[0]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node46"].inputs[1]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node47"].inputs[0]')
        self.innerLink('nodes["Node46"].outputs[0]', 'nodes["Node47"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node48"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node48"].inputs[1]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node49"].inputs[0]')
        self.innerLink('nodes["Node48"].outputs[0]', 'nodes["Node49"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node50"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node50"].inputs[1]')
        self.innerLink('nodes["Node50"].outputs[0]', 'nodes["Node51"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node51"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node52"].inputs[0]')
        self.innerLink('nodes["Node9"].outputs[0]', 'nodes["Node52"].inputs[1]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node53"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node53"].inputs[1]')
        self.innerLink('nodes["Node53"].outputs[0]', 'nodes["Node54"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node54"].inputs[1]')
        self.innerLink('nodes["Node54"].outputs[0]', 'nodes["Node55"].inputs[0]')
        self.innerLink('nodes["Node55"].outputs[0]', 'nodes["Node56"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node57"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node57"].inputs[1]')
        self.innerLink('nodes["Node57"].outputs[0]', 'nodes["Node58"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node58"].inputs[1]')
        self.innerLink('nodes["Node58"].outputs[0]', 'nodes["Node59"].inputs[0]')
        self.innerLink('nodes["Node59"].outputs[0]', 'nodes["Node60"].inputs[0]')
        self.innerLink('nodes["Node56"].outputs[0]', 'nodes["Node61"].inputs[0]')
        self.innerLink('nodes["Node56"].outputs[0]', 'nodes["Node61"].inputs[1]')
        self.innerLink('nodes["Node60"].outputs[0]', 'nodes["Node61"].inputs[2]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node62"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node62"].inputs[1]')
        self.innerLink('nodes["Node62"].outputs[0]', 'nodes["Node63"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node63"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node64"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node64"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node65"].inputs[0]')
        self.innerLink('nodes["Node64"].outputs[0]', 'nodes["Node65"].inputs[1]')
        self.innerLink('nodes["Node63"].outputs[0]', 'nodes["Node66"].inputs[0]')
        self.innerLink('nodes["Node65"].outputs[0]', 'nodes["Node66"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node66"].inputs[2]')
        self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node67"].inputs[0]')
        self.innerLink('nodes["Node2"].outputs[0]', 'nodes["Node67"].inputs[1]')
        self.innerLink('nodes["Node66"].outputs[0]', 'nodes["Node67"].inputs[2]')
        self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node68"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node68"].inputs[1]')
        self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node68"].inputs[2]')
        self.innerLink('nodes["Node61"].outputs[0]', 'nodes["Node69"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node69"].inputs[1]')
        self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node69"].inputs[2]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node70"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node70"].inputs[1]')
        self.innerLink('nodes["Node70"].outputs[0]', 'nodes["Node71"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node71"].inputs[1]')
        self.innerLink('nodes["Node71"].outputs[0]', 'nodes["Node72"].inputs[0]')
        self.innerLink('nodes["Node72"].outputs[0]', 'nodes["Node73"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node74"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node74"].inputs[1]')
        self.innerLink('nodes["Node74"].outputs[0]', 'nodes["Node75"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node75"].inputs[1]')
        self.innerLink('nodes["Node75"].outputs[0]', 'nodes["Node76"].inputs[0]')
        self.innerLink('nodes["Node76"].outputs[0]', 'nodes["Node77"].inputs[0]')
        self.innerLink('nodes["Node73"].outputs[0]', 'nodes["Node78"].inputs[0]')
        self.innerLink('nodes["Node73"].outputs[0]', 'nodes["Node78"].inputs[1]')
        self.innerLink('nodes["Node77"].outputs[0]', 'nodes["Node78"].inputs[2]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node79"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node79"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node80"].inputs[0]')
        self.innerLink('nodes["Node79"].outputs[0]', 'nodes["Node80"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node81"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node81"].inputs[1]')
        self.innerLink('nodes["Node81"].outputs[0]', 'nodes["Node82"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node82"].inputs[1]')
        self.innerLink('nodes["Node80"].outputs[0]', 'nodes["Node83"].inputs[0]')
        self.innerLink('nodes["Node82"].outputs[0]', 'nodes["Node83"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node83"].inputs[2]')
        self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node84"].inputs[0]')
        self.innerLink('nodes["Node67"].outputs[0]', 'nodes["Node84"].inputs[1]')
        self.innerLink('nodes["Node83"].outputs[0]', 'nodes["Node84"].inputs[2]')
        self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node85"].inputs[0]')
        self.innerLink('nodes["Node68"].outputs[0]', 'nodes["Node85"].inputs[1]')
        self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node85"].inputs[2]')
        self.innerLink('nodes["Node78"].outputs[0]', 'nodes["Node86"].inputs[0]')
        self.innerLink('nodes["Node69"].outputs[0]', 'nodes["Node86"].inputs[1]')
        self.innerLink('nodes["Node15"].outputs[0]', 'nodes["Node86"].inputs[2]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node87"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node87"].inputs[1]')
        self.innerLink('nodes["Node87"].outputs[0]', 'nodes["Node88"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node88"].inputs[1]')
        self.innerLink('nodes["Node88"].outputs[0]', 'nodes["Node89"].inputs[0]')
        self.innerLink('nodes["Node89"].outputs[0]', 'nodes["Node90"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node91"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node91"].inputs[1]')
        self.innerLink('nodes["Node91"].outputs[0]', 'nodes["Node92"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node92"].inputs[1]')
        self.innerLink('nodes["Node92"].outputs[0]', 'nodes["Node93"].inputs[0]')
        self.innerLink('nodes["Node93"].outputs[0]', 'nodes["Node94"].inputs[0]')
        self.innerLink('nodes["Node90"].outputs[0]', 'nodes["Node95"].inputs[0]')
        self.innerLink('nodes["Node90"].outputs[0]', 'nodes["Node95"].inputs[1]')
        self.innerLink('nodes["Node94"].outputs[0]', 'nodes["Node95"].inputs[2]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node96"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node96"].inputs[1]')
        self.innerLink('nodes["Node96"].outputs[0]', 'nodes["Node97"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node97"].inputs[1]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node98"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node98"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node99"].inputs[0]')
        self.innerLink('nodes["Node98"].outputs[0]', 'nodes["Node99"].inputs[1]')
        self.innerLink('nodes["Node97"].outputs[0]', 'nodes["Node100"].inputs[0]')
        self.innerLink('nodes["Node99"].outputs[0]', 'nodes["Node100"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node100"].inputs[2]')
        self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node101"].inputs[0]')
        self.innerLink('nodes["Node84"].outputs[0]', 'nodes["Node101"].inputs[1]')
        self.innerLink('nodes["Node100"].outputs[0]', 'nodes["Node101"].inputs[2]')
        self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node102"].inputs[0]')
        self.innerLink('nodes["Node85"].outputs[0]', 'nodes["Node102"].inputs[1]')
        self.innerLink('nodes["Node16"].outputs[0]', 'nodes["Node102"].inputs[2]')
        self.innerLink('nodes["Node95"].outputs[0]', 'nodes["Node103"].inputs[0]')
        self.innerLink('nodes["Node86"].outputs[0]', 'nodes["Node103"].inputs[1]')
        self.innerLink('nodes["Node15"].outputs[0]', 'nodes["Node103"].inputs[2]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node104"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node104"].inputs[1]')
        self.innerLink('nodes["Node104"].outputs[0]', 'nodes["Node105"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node105"].inputs[1]')
        self.innerLink('nodes["Node105"].outputs[0]', 'nodes["Node106"].inputs[0]')
        self.innerLink('nodes["Node106"].outputs[0]', 'nodes["Node107"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node108"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node108"].inputs[1]')
        self.innerLink('nodes["Node108"].outputs[0]', 'nodes["Node109"].inputs[0]')
        self.innerLink('nodes["Node10"].outputs[0]', 'nodes["Node109"].inputs[1]')
        self.innerLink('nodes["Node109"].outputs[0]', 'nodes["Node110"].inputs[0]')
        self.innerLink('nodes["Node110"].outputs[0]', 'nodes["Node111"].inputs[0]')
        self.innerLink('nodes["Node107"].outputs[0]', 'nodes["Node112"].inputs[0]')
        self.innerLink('nodes["Node107"].outputs[0]', 'nodes["Node112"].inputs[1]')
        self.innerLink('nodes["Node111"].outputs[0]', 'nodes["Node112"].inputs[2]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node113"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node113"].inputs[1]')
        self.innerLink('nodes["Node113"].outputs[0]', 'nodes["Node114"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node114"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node115"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node115"].inputs[1]')
        self.innerLink('nodes["Node115"].outputs[0]', 'nodes["Node116"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node116"].inputs[1]')
        self.innerLink('nodes["Node114"].outputs[0]', 'nodes["Node117"].inputs[0]')
        self.innerLink('nodes["Node116"].outputs[0]', 'nodes["Node117"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node117"].inputs[2]')
        self.innerLink('nodes["Node112"].outputs[0]', 'nodes["Node118"].inputs[0]')
        self.innerLink('nodes["Node101"].outputs[0]', 'nodes["Node118"].inputs[1]')
        self.innerLink('nodes["Node117"].outputs[0]', 'nodes["Node118"].inputs[2]')
        self.innerLink('nodes["Node112"].outputs[0]', 'nodes["Node119"].inputs[0]')
        self.innerLink('nodes["Node102"].outputs[0]', 'nodes["Node119"].inputs[1]')
        self.innerLink('nodes["Node16"].outputs[0]', 'nodes["Node119"].inputs[2]')
        self.innerLink('nodes["Node112"].outputs[0]', 'nodes["Node120"].inputs[0]')
        self.innerLink('nodes["Node103"].outputs[0]', 'nodes["Node120"].inputs[1]')
        self.innerLink('nodes["Node13"].outputs[0]', 'nodes["Node120"].inputs[2]')
        self.innerLink('nodes["Node28"].outputs[0]', 'nodes["Node121"].inputs[0]')
        self.innerLink('nodes["Node119"].outputs[0]', 'nodes["Node121"].inputs[1]')
        self.innerLink('nodes["Node33"].outputs[0]', 'nodes["Node122"].inputs[0]')
        self.innerLink('nodes["Node120"].outputs[0]', 'nodes["Node122"].inputs[1]')
        self.innerLink('nodes["Node121"].outputs[0]', 'nodes["Node123"].inputs[0]')
        self.innerLink('nodes["Node122"].outputs[0]', 'nodes["Node123"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node123"].inputs[2]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node124"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node124"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node125"].inputs[0]')
        self.innerLink('nodes["Node124"].outputs[0]', 'nodes["Node125"].inputs[1]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node126"].inputs[0]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node126"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node127"].inputs[0]')
        self.innerLink('nodes["Node126"].outputs[0]', 'nodes["Node127"].inputs[1]')
        self.innerLink('nodes["Node125"].outputs[0]', 'nodes["Node128"].inputs[0]')
        self.innerLink('nodes["Node127"].outputs[0]', 'nodes["Node128"].inputs[1]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node129"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node129"].inputs[1]')
        self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node130"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node130"].inputs[1]')
        self.innerLink('nodes["Node23"].outputs[0]', 'nodes["Node131"].inputs[0]')
        self.innerLink('nodes["Node130"].outputs[0]', 'nodes["Node131"].inputs[1]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node132"].inputs[0]')
        self.innerLink('nodes["Node131"].outputs[0]', 'nodes["Node132"].inputs[1]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node133"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node133"].inputs[1]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node134"].inputs[0]')
        self.innerLink('nodes["Node132"].outputs[0]', 'nodes["Node134"].inputs[1]')
        self.innerLink('nodes["Node134"].outputs[0]', 'nodes["Node135"].inputs[0]')
        self.innerLink('nodes["Node135"].outputs[0]', 'nodes["Node136"].inputs[0]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node137"].inputs[0]')
        self.innerLink('nodes["Node132"].outputs[0]', 'nodes["Node137"].inputs[1]')
        self.innerLink('nodes["Node136"].outputs[0]', 'nodes["Node138"].inputs[0]')
        self.innerLink('nodes["Node137"].outputs[0]', 'nodes["Node138"].inputs[1]')
        self.innerLink('nodes["Node138"].outputs[0]', 'nodes["Node139"].inputs[0]')
        self.innerLink('nodes["Node128"].outputs[0]', 'nodes["Node140"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node140"].inputs[1]')
        self.innerLink('nodes["Node132"].outputs[0]', 'nodes["Node141"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node141"].inputs[1]')
        self.innerLink('nodes["Node140"].outputs[0]', 'nodes["Node142"].inputs[0]')
        self.innerLink('nodes["Node141"].outputs[0]', 'nodes["Node142"].inputs[1]')
        self.innerLink('nodes["Node139"].outputs[0]', 'nodes["Node143"].inputs[0]')
        self.innerLink('nodes["Node142"].outputs[0]', 'nodes["Node143"].inputs[1]')
        self.innerLink('nodes["Node18"].outputs[0]', 'nodes["Node143"].inputs[2]')
        self.innerLink('nodes["Node133"].outputs[0]', 'nodes["Node144"].inputs[0]')
        self.innerLink('nodes["Node143"].outputs[0]', 'nodes["Node144"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node144"].inputs[2]')
        self.innerLink('nodes["Node28"].outputs[0]', 'nodes["Node145"].inputs[0]')
        self.innerLink('nodes["Node33"].outputs[0]', 'nodes["Node145"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node145"].inputs[2]')
        self.innerLink('nodes["Node39"].outputs[0]', 'nodes["Node146"].inputs[0]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node146"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node146"].inputs[2]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node147"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node147"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node148"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node148"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node149"].inputs[0]')
        self.innerLink('nodes["Node148"].outputs[0]', 'nodes["Node149"].inputs[1]')
        self.innerLink('nodes["Node149"].outputs[0]', 'nodes["Node150"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node150"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node151"].inputs[0]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node151"].inputs[1]')
        self.innerLink('nodes["Node45"].outputs[0]', 'nodes["Node152"].inputs[0]')
        self.innerLink('nodes["Node151"].outputs[0]', 'nodes["Node152"].inputs[1]')
        self.innerLink('nodes["Node21"].outputs[0]', 'nodes["Node153"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node153"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node154"].inputs[0]')
        self.innerLink('nodes["Node153"].outputs[0]', 'nodes["Node154"].inputs[1]')
        self.innerLink('nodes["Node154"].outputs[0]', 'nodes["Node155"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node155"].inputs[1]')
        self.innerLink('nodes["Node47"].outputs[0]', 'nodes["Node156"].inputs[0]')
        self.innerLink('nodes["Node49"].outputs[0]', 'nodes["Node156"].inputs[1]')
        self.innerLink('nodes["Node152"].outputs[0]', 'nodes["Node157"].inputs[0]')
        self.innerLink('nodes["Node156"].outputs[0]', 'nodes["Node157"].inputs[1]')
        self.innerLink('nodes["Node155"].outputs[0]', 'nodes["Node157"].inputs[2]')
        self.innerLink('nodes["Node147"].outputs[0]', 'nodes["Node158"].inputs[0]')
        self.innerLink('nodes["Node157"].outputs[0]', 'nodes["Node158"].inputs[1]')
        self.innerLink('nodes["Node150"].outputs[0]', 'nodes["Node158"].inputs[2]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node159"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node159"].inputs[1]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node160"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node160"].inputs[1]')
        self.innerLink('nodes["Node160"].outputs[0]', 'nodes["Node161"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node161"].inputs[1]')
        self.innerLink('nodes["Node23"].outputs[0]', 'nodes["Node162"].inputs[0]')
        self.innerLink('nodes["Node161"].outputs[0]', 'nodes["Node162"].inputs[1]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node163"].inputs[0]')
        self.innerLink('nodes["Node162"].outputs[0]', 'nodes["Node163"].inputs[1]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node164"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node164"].inputs[1]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node165"].inputs[0]')
        self.innerLink('nodes["Node163"].outputs[0]', 'nodes["Node165"].inputs[1]')
        self.innerLink('nodes["Node165"].outputs[0]', 'nodes["Node166"].inputs[0]')
        self.innerLink('nodes["Node166"].outputs[0]', 'nodes["Node167"].inputs[0]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node168"].inputs[0]')
        self.innerLink('nodes["Node163"].outputs[0]', 'nodes["Node168"].inputs[1]')
        self.innerLink('nodes["Node167"].outputs[0]', 'nodes["Node169"].inputs[0]')
        self.innerLink('nodes["Node168"].outputs[0]', 'nodes["Node169"].inputs[1]')
        self.innerLink('nodes["Node169"].outputs[0]', 'nodes["Node170"].inputs[0]')
        self.innerLink('nodes["Node158"].outputs[0]', 'nodes["Node171"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node171"].inputs[1]')
        self.innerLink('nodes["Node163"].outputs[0]', 'nodes["Node172"].inputs[0]')
        self.innerLink('nodes["Node22"].outputs[0]', 'nodes["Node172"].inputs[1]')
        self.innerLink('nodes["Node171"].outputs[0]', 'nodes["Node173"].inputs[0]')
        self.innerLink('nodes["Node172"].outputs[0]', 'nodes["Node173"].inputs[1]')
        self.innerLink('nodes["Node170"].outputs[0]', 'nodes["Node174"].inputs[0]')
        self.innerLink('nodes["Node173"].outputs[0]', 'nodes["Node174"].inputs[1]')
        self.innerLink('nodes["Node18"].outputs[0]', 'nodes["Node174"].inputs[2]')
        self.innerLink('nodes["Node164"].outputs[0]', 'nodes["Node175"].inputs[0]')
        self.innerLink('nodes["Node174"].outputs[0]', 'nodes["Node175"].inputs[1]')
        self.innerLink('nodes["Node14"].outputs[0]', 'nodes["Node175"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node176"].inputs[0]')
        self.innerLink('nodes["Node159"].outputs[0]', 'nodes["Node176"].inputs[1]')
        self.innerLink('nodes["Node129"].outputs[0]', 'nodes["Node176"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node177"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[5]', 'nodes["Node177"].inputs[1]')
        self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node177"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node178"].inputs[0]')
        self.innerLink('nodes["GroupInput"].outputs[4]', 'nodes["Node178"].inputs[1]')
        self.innerLink('nodes["Node52"].outputs[0]', 'nodes["Node178"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node179"].inputs[0]')
        self.innerLink('nodes["Node145"].outputs[0]', 'nodes["Node179"].inputs[1]')
        self.innerLink('nodes["Node123"].outputs[0]', 'nodes["Node179"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node180"].inputs[0]')
        self.innerLink('nodes["Node175"].outputs[0]', 'nodes["Node180"].inputs[1]')
        self.innerLink('nodes["Node144"].outputs[0]', 'nodes["Node180"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node181"].inputs[0]')
        self.innerLink('nodes["Node5"].outputs[0]', 'nodes["Node181"].inputs[1]')
        self.innerLink('nodes["Node11"].outputs[0]', 'nodes["Node181"].inputs[2]')
        self.innerLink('nodes["Node51"].outputs[0]', 'nodes["Node182"].inputs[0]')
        self.innerLink('nodes["Node146"].outputs[0]', 'nodes["Node182"].inputs[1]')
        self.innerLink('nodes["Node118"].outputs[0]', 'nodes["Node182"].inputs[2]')
        self.innerLink('nodes["Node182"].outputs[0]', 'nodes["GroupOutput"].inputs[0]')
        self.innerLink('nodes["Node179"].outputs[0]', 'nodes["GroupOutput"].inputs[1]')
        self.innerLink('nodes["Node180"].outputs[0]', 'nodes["GroupOutput"].inputs[2]')
        self.innerLink('nodes["Node181"].outputs[0]', 'nodes["GroupOutput"].inputs[3]')
        self.innerLink('nodes["Node176"].outputs[0]', 'nodes["GroupOutput"].inputs[4]')
        self.innerLink('nodes["Node178"].outputs[0]', 'nodes["GroupOutput"].inputs[5]')
        self.innerLink('nodes["Node177"].outputs[0]', 'nodes["GroupOutput"].inputs[6]')
    def getNodetree(self, name):
        if bpy.data.node_groups.find(name)==-1:
            self.createNodetree(name)
        else:
            self.node_tree=bpy.data.node_groups[name]
                   
    def addSocket(self, is_output, sockettype, name):
        #for now duplicated socket names are not allowed
        if is_output==True:
            if self.node_tree.nodes['GroupOutput'].inputs.find(name)==-1:
                socket=self.node_tree.outputs.new(sockettype, name)
        elif is_output==False:
            if self.node_tree.nodes['GroupInput'].outputs.find(name)==-1:
                socket=self.node_tree.inputs.new(sockettype, name)
        return socket
       
    def addNode(self, nodetype, attrs):
        node=self.node_tree.nodes.new(nodetype)
        for attr in attrs:
            self.value_set(node, attr, attrs[attr])
        return node
   
    def getNode(self, nodename):
        if self.node_tree.nodes.find(nodename)>-1:
            return self.node_tree.nodes[nodename]
        return None
   
    def innerLink(self, socketin, socketout):
        SI=self.node_tree.path_resolve(socketin)
        SO=self.node_tree.path_resolve(socketout)
        self.node_tree.links.new(SI, SO)
       
    def free(self):
        if self.node_tree.users==1:
            bpy.data.node_groups.remove(self.node_tree, do_unlink=True)
#Nodes #Sockets #Links #for now duplicated socket names are not allowed