FISH Functions
The type specifiers used in the FISH function signatures are given in the FISH Type Index section.
- General Structural Element Functions
- Beam Functions
- Cable Functions
- Pile Functions
- Shell Functions
- Geogrid Functions
- Liner Functions
- Structural Node Functions
- Structural Link Functions
General Structural Element Functions
These functions apply to all structure element types. Pointers to any of the six types of structural elements may be used or may be returned.
struct.connectivity(STRUCT_PNT,INT) | Get the index of the node with component-ID id in... |
struct.delete(STRUCT_PNT) | Delete the structural element. |
struct.density(STRUCT_PNT) | Get/set the structural element density. |
struct.extra(STRUCT_PNT<,INT>) | Get/set the FISH parameter value stored at index i of... |
struct.find(INT) | Get the structural element with internally assigned component-ID number i . |
struct.group(STRUCT_PNT<,STR>) | Get/set the group name assigned to structural element p in... |
struct.group.remove(STRUCT_PNT,STR) | Remove the group s from structural element p in all... |
struct.head | Get the first element in the list of all structural... |
struct.id(STRUCT_PNT) | Get the structural element ID number. |
struct.id.component(STRUCT_PNT) | Get the structural element component-ID number. |
struct.isgroup(STRUCT_PNT,STR<,STR>) | Check if the group s is associated with the structural... |
struct.list | Get the list of all structural elements in the model,... |
struct.local.system(STRUCT_PNT<,INT><,INT>) | Get the local coordinate system for the structural element. |
struct.mark(STRUCT_PNT) | Get/set the mark flag on the structural element. |
struct.maxid | Get the maximum component-ID number assigned to any structural element... |
struct.mech.convergence | Get the maximum convergence value (local ratio divided by target... |
struct.mech.ratio.avg | Get the average convergence ratio of all structural nodes in... |
struct.mech.ratio.local | Get the maximum local convergence ratio of all structural nodes... |
struct.mech.ratio.max | Get the ratio of maximum unbalanced force to average applied... |
struct.mech.unbal.max | Get the structural node maximum unbalanced force. |
struct.near | Get the structural element (of any type) whose centroid is... |
struct.next(STRUCT_PNT) | Get the next element after p in the list of... |
struct.node(STRUCT_PNT,INT) | Get a pointer to the node at index i in... |
struct.num | Get the total number of structural elements in the model. |
struct.pos(STRUCT_PNT<,INT>) | Get the position vector of the element, defined as the... |
struct.therm.expansion(STRUCT_PNT) | Get/set the thermal expansion coefficient for the structural element. |
struct.type(STRUCT_PNT) | Get the name of the structural element type. |
struct.typeid | Get an identifier that uniquely determines the type of object. |
struct.was.updated | Returns TRUE if the last validation check actually performed a... |
Beam Functions
Note that all beam functions can also be used with pile elements.
struct.beam.area(STRUCT_BEAM_PNT) | Get/set the cross-section area of the element. |
struct.beam.force(STRUCT_BEAM_PNT,INT<,INT>) | Get the force at one end of the beam in... |
struct.beam.force.nodal(STRUCT_BEAM_PNT,INT<,INT>) | Get the generalized nodal force acting at end iend in... |
struct.beam.length(STRUCT_BEAM_PNT) | Get the length of the beam element. |
struct.beam.load(STRUCT_BEAM_PNT<,INT>) | Get/set the uniform applied distributed load acting on the beam... |
struct.beam.moi(STRUCT_BEAM_PNT<,INT>) | Get/set the moment of inertia of the beam. |
struct.beam.moment(STRUCT_BEAM_PNT,INT<,INT>) | Get the moment at one end of the beam in... |
struct.beam.moment.plastic(STRUCT_BEAM_PNT) | Get/set the plastic moment capacity in the beam. |
struct.beam.poisson(STRUCT_BEAM_PNT) | Get/set the Poisson’s ratio of the beam element. |
struct.beam.volume(STRUCT_BEAM_PNT) | Get the beam element volume, or the cross-sectional area times... |
struct.beam.ydir(STRUCT_BEAM_PNT<,INT>) | Get the y -axis of the beam element local system. |
struct.beam.young(STRUCT_BEAM_PNT) | Get/set the Young’s modulus of the beam element. |
Cable Functions
struct.cable.area(STRUCT_CABLE_PNT) | Get/set the cross-section area of the cable element. |
struct.cable.force.axial(STRUCT_CABLE_PNT) | Get the average axial force of the element (positive: tension;... |
struct.cable.force.nodal(STRUCT_CABLE_PNT,INT<,INT>) | Get the generalized nodal force acting at end iend . |
struct.cable.grout.cohesion(STRUCT_CABLE_PNT) | Get/set the grout cohesion. |
struct.cable.grout.confining(STRUCT_CABLE_PNT,INT) | Get the confining stress acting on the grout at end... |
struct.cable.grout.dir(STRUCT_CABLE_PNT,INT<,INT>) | Get the direction vector in which cableSEL is being loaded... |
struct.cable.grout.disp(STRUCT_CABLE_PNT,INT) | Get displacement in grout (shear coupling spring) at end iend ... |
struct.cable.grout.friction(STRUCT_CABLE_PNT) | Get/set the grout internal friction angle. |
struct.cable.grout.perimeter(STRUCT_CABLE_PNT) | Get/set the grout exposed perimeter. |
struct.cable.grout.slip(STRUCT_CABLE_PNT,INT) | Get the slip state of grout (shear coupling spring) at... |
struct.cable.grout.stiffness(STRUCT_CABLE_PNT) | Get/set the grout stiffness. |
struct.cable.grout.stress(STRUCT_CABLE_PNT,INT) | Get stress in grout (shear coupling spring) at end iend ... |
struct.cable.length(STRUCT_CABLE_PNT) | Get the length of the cable element. |
struct.cable.slide(STRUCT_CABLE_PNT) | Get the boolean flag of the large-strain sliding. |
struct.cable.slide.tol(STRUCT_CABLE_PNT) | Get/set the large-strain sliding tolerance of the cable element. |
struct.cable.state.compression(STRUCT_CABLE_PNT) | Get the compression yield state of the cable element. |
struct.cable.state.tension(STRUCT_CABLE_PNT) | Get the tension yield state of cable element. |
struct.cable.stress.axial(STRUCT_CABLE_PNT) | Get the average axial stress of the cable element (positive:... |
struct.cable.volume(STRUCT_CABLE_PNT) | Get the cable element volume, or the cross-sectional area times... |
struct.cable.yield.compression(STRUCT_CABLE_PNT) | Get/set the compression yield strength of the cable element. |
struct.cable.yield.tension(STRUCT_CABLE_PNT) | Get/set the tension yield strength of the cable element. |
struct.cable.young(STRUCT_CABLE_PNT) | Get/set the Young’s modulus of the cable element. |
Pile Functions
Note that beam functions may also be used on pile elements
struct.pile.area(STRUCT_PILE_PNT) | Get/set the cross-section area of the pile element. |
struct.pile.axial.yield(STRUCT_PILE_PNT) | Get/set the axial tensile yield strength (force units) of the... |
struct.pile.force(STRUCT_PILE_PNT,INT<,INT>) | Get the nodal force acting on the pile element at... |
struct.pile.force.nodal(STRUCT_PILE_PNT,INT<,INT>) | Get the generalized nodal force acting at end iend in... |
struct.pile.gap(STRUCT_PILE_PNT,INT,INT) | Get the gap component in normal spring at end iend ... |
struct.pile.length(STRUCT_PILE_PNT) | Get/set the length of the pile element. |
struct.pile.load(STRUCT_PILE_PNT<,INT>) | Get/set the uniform applied distributed load acting on the pile... |
struct.pile.moi(STRUCT_PILE_PNT<,INT>) | Get/set the moment of inertia of the pile. |
struct.pile.moment(STRUCT_PILE_PNT,INT<,INT>) | Get the nodal moment acting on the pile element at... |
struct.pile.moment.plastic(STRUCT_PILE_PNT) | Get/set the plastic moment capacity of the pile element. |
struct.pile.normal.cohesion(STRUCT_PILE_PNT) | Get/set the normal coupling spring cohesive strength of the pile... |
struct.pile.normal.dir(STRUCT_PILE_PNT,INT<,INT>) | Get the global direction in which the pile element is... |
struct.pile.normal.disp(STRUCT_PILE_PNT,INT) | Get the displacement in the coupling normal spring at end... |
struct.pile.normal.friction(STRUCT_PILE_PNT) | Get/set the normal coupling spring friction angle of the pile... |
struct.pile.normal.gap(STRUCT_PILE_PNT) | Get the normal coupling spring gap-use flag. |
struct.pile.normal.state(STRUCT_PILE_PNT,INT) | Get the yield state of the coupling normal spring at... |
struct.pile.normal.stiffness(STRUCT_PILE_PNT) | Get/set the normal coupling spring stiffness of the pile element. |
struct.pile.normal.stress(STRUCT_PILE_PNT,INT) | Get the stress in the coupling normal spring at end... |
struct.pile.perimeter(STRUCT_PILE_PNT) | Get/set the exposed perimeter of the pile element. |
struct.pile.poisson(STRUCT_PILE_PNT) | Get/set the Poisson’s ratio of the pile element. |
struct.pile.rockbolt(STRUCT_PILE_PNT) | Get a boolean flag of the rockbolt. |
struct.pile.shear.cohesion(STRUCT_PILE_PNT) | Get/set the shear coupling spring cohesive strength of the pile... |
struct.pile.shear.dir(STRUCT_PILE_PNT,INT<,INT>) | Get the global direction in which the pile element is... |
struct.pile.shear.disp(STRUCT_PILE_PNT,INT) | Get the displacement in coupling shear spring at end iend ... |
struct.pile.shear.flag(STRUCT_PILE_PNT) | Get the shear direction incremental confining stress flag. |
struct.pile.shear.friction(STRUCT_PILE_PNT) | Get/set the shear coupling spring friction angle of the pile... |
struct.pile.shear.state(STRUCT_PILE_PNT,INT) | Get the yield state of the coupling shear spring at... |
struct.pile.shear.stiffness(STRUCT_PILE_PNT) | Get/set the shear coupling spring stiffness of the pile element. |
struct.pile.shear.stress(STRUCT_PILE_PNT,INT) | Get the stress in coupling shear spring at end iend ... |
struct.pile.slide(STRUCT_PILE_PNT) | Get a boolean flag of slide. |
struct.pile.slide.tol(STRUCT_PILE_PNT) | Get/set the large-strain sliding tolerance of the pile element. |
struct.pile.strain.failure(STRUCT_PILE_PNT) | Get/set the tensile failure strain (non-dimensional) of the pile element. |
struct.pile.stress.confining(STRUCT_PILE_PNT,INT) | Get the confining stress at end iend ∈ {1, 2}... |
struct.pile.table.cohesion(STRUCT_PILE_PNT) | Get/set the shear direction cohesion strength table number for the... |
struct.pile.table.factor(STRUCT_PILE_PNT) | Get/set the shear direction friction table number for the pile... |
struct.pile.table.friction(STRUCT_PILE_PNT) | Get/set the shear direction incremental confining stress factor table number... |
struct.pile.volume(STRUCT_PILE_PNT) | Get/set the volume of the pile element. |
struct.pile.ydir(STRUCT_PILE_PNT<,INT>) | Get the y -axis of the pile element local system. |
struct.pile.young(STRUCT_PILE_PNT) | Get/set the Young’s modulus of the pile element. |
Shell Functions
Note that all shell functions will also work with both geogrid elements and liner elements.
struct.shell.area(STRUCT_SHELL_PNT) | Get surface area of the shell-type element. |
struct.shell.beta(STRUCT_SHELL_PNT) | Get shell-type material system beta angle. |
struct.shell.depth.factor(STRUCT_SHELL_PNT) | Get the depth factor at which stresses have been recovered. |
struct.shell.element.type(STRUCT_SHELL_PNT) | Get the name of the finite-element type used by this... |
struct.shell.force.nodal(STRUCT_SHELL_PNT,INT<,INT>) | Get the generalized nodal force acting on the shell at... |
struct.shell.poisson(STRUCT_SHELL_PNT) | Get/set the Poisson’s ratio of the element. |
struct.shell.pressure(STRUCT_SHELL_PNT) | Get/set the uniform pressure acting on the shell. |
struct.shell.prop.anis(STRUCT_SHELL_PNT,INT,INT) | Get the anisotropic material properties. |
struct.shell.prop.ortho(STRUCT_SHELL_PNT,INT,INT) | Get the orthotropic material properties. |
struct.shell.prop.type(STRUCT_SHELL_PNT) | Get the material property type. |
struct.shell.resultant(STRUCT_SHELL_PNT,INT<,INT>) | Get stress resultants last calculated for the element at the... |
struct.shell.resultant.valid(STRUCT_SHELL_PNT) | Get stress resultant validity flag. |
struct.shell.stress(STRUCT_SHELL_PNT,INT<,INT<,INT>>) | Get the shell stresses at the current depth factor at... |
struct.shell.stress.prin(STRUCT_SHELL_PNT,INT<,INT>) | Get the resolved principal stress at the current depth factor... |
struct.shell.stress.valid(STRUCT_SHELL_PNT) | Get the stress validity flag for the element. |
struct.shell.thickness(STRUCT_SHELL_PNT) | Get/set the element thickness. |
struct.shell.volume(STRUCT_SHELL_PNT) | Get the element volume, or surface area times thickness. |
struct.shell.young(STRUCT_SHELL_PNT) | Get/set the Young’s modulus of the element. |
Geogrid Functions
Note that all shell functions may also be used on geogrid elements.
struct.geogrid.shear.cohesion(STRUCT_GEOGRID_PNT) | Get/set the (shear) coupling spring cohesion strength of the geogrid... |
struct.geogrid.shear.dir(STRUCT_GEOGRID_PNT,INT<,INT>) | Get the direction (unit vector in global system) in which... |
struct.geogrid.shear.disp(STRUCT_GEOGRID_PNT,INT) | Get the displacement magnitude in the coupling spring at node... |
struct.geogrid.shear.friction(STRUCT_GEOGRID_PNT) | Get/set the (shear) coupling spring friction angle of the geogrid... |
struct.geogrid.shear.state(STRUCT_GEOGRID_PNT,INT) | Get the yield state of the coupling spring at node... |
struct.geogrid.shear.stiffness(STRUCT_GEOGRID_PNT) | Get/set the (shear) coupling spring stiffness of the geogrid element. |
struct.geogrid.shear.stress(STRUCT_GEOGRID_PNT,INT) | Get the stress magnitude in coupling spring at node inode ... |
struct.geogrid.slide(STRUCT_GEOGRID_PNT) | Get/set the large-strain sliding flag. |
struct.geogrid.slide.tol(STRUCT_GEOGRID_PNT) | Get/set the (shear) coupling spring slide tolerance of the geogrid... |
struct.geogrid.stress.confining(STRUCT_GEOGRID_PNT,INT) | Get the confining stress at node inode ( inode ∈ {1,... |
Liner Functions
Note that all shell functions may also be used on liner elements.
struct.liner.embedded(STRUCT_LINER_PNT) | Get the embedded flag. |
struct.liner.normal.dir(STRUCT_LINER_PNT,INT<,INT>) | Get the direction (unit vector in global system) in which... |
struct.liner.normal.disp(STRUCT_LINER_PNT,INT) | Get the displacement magnitude in the normal coupling spring at... |
struct.liner.normal.stiffness(STRUCT_LINER_PNT<,INT>) | Get/set the normal coupling spring stiffness of the liner element. |
struct.liner.normal.strength(STRUCT_LINER_PNT<,INT>) | Get/set the normal coupling spring tensile strength of the liner... |
struct.liner.normal.stress(STRUCT_LINER_PNT,INT) | Get the stress magnitude in the normal coupling spring at... |
struct.liner.shear.cohesion(STRUCT_LINER_PNT<,INT>) | Get/set the shear coupling spring cohesion of the liner element. |
struct.liner.shear.dir(STRUCT_LINER_PNT,INT<,INT>) | Get the direction (unit vector in global system) in which... |
struct.liner.shear.disp(STRUCT_LINER_PNT,INT) | Get the displacement magnitude in the shear coupling spring at... |
struct.liner.shear.friction(STRUCT_LINER_PNT<,INT>) | Get/set the shear coupling spring friction angle of the liner... |
struct.liner.shear.residual(STRUCT_LINER_PNT<,INT>) | Get/set the shear coupling spring residual cohesion of the liner... |
struct.liner.shear.state(STRUCT_LINER_PNT,INT) | Get the yield state of the coupling spring at node... |
struct.liner.shear.stiffness(STRUCT_LINER_PNT<,INT>) | Get/set the shear coupling spring stiffness of the liner element. |
struct.liner.shear.stress(STRUCT_LINER_PNT,INT) | Get the stress magnitude in the shear coupling spring at... |
struct.liner.slide(STRUCT_LINER_PNT) | Get/set the large-strain sliding flag. |
struct.liner.slide.tol(STRUCT_LINER_PNT) | Get/set the shear coupling spring slide tolerance of the liner... |
Node Functions
struct.node.acc.global(STRUCT_NODE_PNT<,INT>) | Get the acceleration of structure node expressed in a global... |
struct.node.acc.local(STRUCT_NODE_PNT<,INT>) | Get the acceleration of structure node expressed in a local... |
struct.node.apply(STRUCT_NODE_PNT<,INT>) | Get/set the generalized applied force expressed in a system defined by... |
struct.node.apply.local(STRUCT_NODE_PNT) | Get whether the coordinate system in which generalized applied forces... |
struct.node.convergence(STRUCT_NODE_PNT) | Returns the gridpoint convergence value, defined as the ratio of... |
struct.node.damp.local(STRUCT_NODE_PNT) | Get/set the local damping factor of the structure node. |
struct.node.disp.global(STRUCT_NODE_PNT<,INT>) | Get the displacement of structure node expressed in a global... |
struct.node.disp.local(STRUCT_NODE_PNT<,INT>) | Get the displacement of structure node expressed in a local... |
struct.node.extra(STRUCT_NODE_PNT<,INT>) | Get/set the value stored in the i th extra variable array... |
struct.node.find(INT) | Get the structural node with internally assigned component-ID number i . |
struct.node.fix(STRUCT_NODE_PNT,INT) | Get velocity-fixity flag expressed in the node-local system (degree-of-freedom component i1 ... |
struct.node.fix.local(STRUCT_NODE_PNT) | Get/set the boolean flag for the local coordinate system fixity. |
struct.node.force.unbal.global(STRUCT_NODE_PNT<,INT>) | Get the unbalanced force of structure node expressed in a... |
struct.node.force.unbal.local(STRUCT_NODE_PNT<,INT>) | Get the unbalanced force of structure node expressed in a... |
struct.node.group(STRUCT_NODE_PNT<,STR>) | Get/set the group name assigned to structure node sn in... |
struct.node.group.remove(STRUCT_NODE_PNT,STR) | Remove the group s from structure node sn in all... |
struct.node.head | Get the first structure node in the list of all... |
struct.node.id(STRUCT_NODE_PNT) | Get the structural node ID number. |
struct.node.id.component(STRUCT_NODE_PNT) | Get the structural node component-ID number. |
struct.node.link(STRUCT_NODE_PNT<,INT>) | Get the link associated with structure node sn . |
struct.node.list | Get the list of all structure nodes in the model. |
struct.node.mark(STRUCT_NODE_PNT) | Get/set the mark flag. |
struct.node.mass.added(STRUCT_NODE_PNT<,INT>) | Get/set the extra mass in addition to the inertial mass... |
struct.node.mass.local(STRUCT_NODE_PNT<,INT>) | Get the mass at the degree-of-freedom i ∈ {1, 2,... |
struct.node.maxid | Get the maximum component-ID number assigned to any structural node... |
struct.node.near(VEC+) | Get the structure node nearest v . |
struct.node.next(STRUCT_NODE_PNT) | Get the next structure node after sn in the list... |
struct.node.num | Get the total number of structure nodes in the model. |
struct.node.pos(STRUCT_NODE_PNT<,INT>) | Get the current position vector for the structure node. |
struct.node.pos.reference(STRUCT_NODE_PNT<,INT>) | Get the reference position vector for the structure node. |
struct.node.ratio(STRUCT_NODE_PNT) | Get the local gridpoint mechanical convergence ratio. |
struct.node.ratio.target(STRUCT_NODE_PNT) | Get/set the target mechanical force ratio in the node. |
struct.node.resultant(STRUCT_NODE_PNT<,INT>) | Get stress resultants last calculated for the elements connected to... |
struct.node.stiff.local(STRUCT_NODE_PNT<,INT>) | Get the stiffness of structure node expressed in a local... |
struct.node.surface.valid(STRUCT_NODE_PNT) | Get a boolean flag for surface system validity; true if the... |
struct.node.surface.xdir(STRUCT_NODE_PNT,VEC) | Set the orientation of the surface system of node sn such... |
struct.node.system.local(STRUCT_NODE_PNT<,INT><,INT>) | Get the local coordinate system of the structure node. |
struct.node.system.surface(STRUCT_NODE_PNT<,INT><,INT>) | Get/set the surface coordinate system of the structure node. |
struct.node.temp.increment(STRUCT_NODE_PNT) | Get/set the the temperature increment that will be applied to... |
struct.node.typeid | Get an identifier that uniquely determines the type of object. |
struct.node.vel.global(STRUCT_NODE_PNT<,INT>) | Get the velocity of a structure node expressed in a... |
struct.node.vel.local(STRUCT_NODE_PNT<,INT>) | Get the velocity of a structure node expressed in a... |
Link Functions
struct.link.attach(STRUCT_LINK_PNT,INT) | Get the attached condition used by the link in degree-of-freedom... |
struct.link.delete(STRUCT_LINK_PNT) | Delete the structural link. |
struct.link.extra(STRUCT_LINK_PNT<,INT>) | Get/set the FISH parameter value stored at index i of... |
struct.link.find(INT) | Get the link with internally assigned component-ID number i . |
struct.link.group(STRUCT_LINK_PNT<,STR>) | Get/set the group name assigned to link p in slot... |
struct.link.group.remove(STRUCT_LINK_PNT,STR) | Remove the group s from structural link p in all... |
struct.link.head | Get the first zone in the list of all structural... |
struct.link.id(STRUCT_LINK_PNT) | Get the structural link ID number. |
struct.link.id.component(STRUCT_LINK_PNT) | Get the structural link component-ID number. |
struct.link.list | Get the list of all structural links in the model. |
struct.link.maxid | Get the maximum component-ID number assigned to any structural link... |
struct.link.model(STRUCT_LINK_PNT,INT) | Get the name of the 1-D force-displacement model used in... |
struct.link.model.area(STRUCT_LINK_PNT<,INT>) | Get/set the area associated with the force-displacement model. |
struct.link.model.compression(STRUCT_LINK_PNT<,INT>) | Get/set the compressive yield force associated with the force-displacement model. |
struct.link.model.disp(STRUCT_LINK_PNT<,INT>) | Get the relative displacement between the node and the target... |
struct.link.model.force(STRUCT_LINK_PNT<,INT>) | Get the current force in each 1-D force-displacement model. |
struct.link.model.gap(STRUCT_LINK_PNT) | Get/set the flag indicating whether gap calculations are active in... |
struct.link.model.gap.neg(STRUCT_LINK_PNT<,INT>) | Get the negative (compressive) gap component of each 1-D force-displacement... |
struct.link.model.gap.pos(STRUCT_LINK_PNT<,INT>) | Get the positive (tensile) gap component of each 1-D force-displacement... |
struct.link.model.stiffness(STRUCT_LINK_PNT<,INT>) | Get/set the stiffness used by each 1-D force-displacement model. |
struct.link.model.tension(STRUCT_LINK_PNT<,INT>) | Get/set the tensile yield force associated with the force-displacement model. |
struct.link.model.yield(STRUCT_LINK_PNT,INT) | Get the yield state indicator in the 1-D force displacement... |
struct.link.next(STRUCT_LINK_PNT) | Get the next link after p in the list of... |
struct.link.node(STRUCT_LINK_PNT) | Get a pointer to the node hosting the structural link. |
struct.link.num | Get the total number of structural links in the model. |
struct.link.side(STRUCT_LINK_PNT) | Get the side number of the link. |
struct.link.slide(STRUCT_LINK_PNT) | Get/set the large-strain sliding DR: previous wants to be a... |
struct.link.slide.tol(STRUCT_LINK_PNT) | Get/set the large-strain sliding DR: previous wants to be a... |
struct.link.target(STRUCT_LINK_PNT) | Get the ID (or component-ID) of the target. |
struct.link.type(STRUCT_LINK_PNT) | Get the name of the link target type. |
struct.link.typeid | Get an identifier that uniquely determines the type of object. |
struct.link.used.by(STRUCT_LINK_PNT) | Get the name of the type of structural element with... |
Was this helpful? ... | PFC © 2019, Itasca | Updated: Apr 26, 2019 |