text:
Southern ITS International, Inc. Announces that it has finalized steps for the acquisiton of Evolution Entreprises, LLC
Las Vegas, May 31, 2017 (GLOBE NEWSWIRE) — Southern ITS International, Inc. announces that it has finalized steps for the acquisition of Evolution Enterprises, LLC
LAS VEGAS, NV–(GlobeNewswire – May 31, 2017) – Southern ITS International, Inc. ("SITS") (OTC PINKSHEETS: SITS) announced today that it has finalized the steps necessary to complete its acquisition of and reverse merger with Evolution Enterprises, LLC ("Evolution"), a Nevada based privately owned company (www.evoenterprisesinc.com ). Evolution owns and controls a portfolio of highly successful businesses that focus on direct sales networks. SITS plans to complete the transaction, including the new share structure, name change and new board of directors over the next coming weeks.
David McCovy, founder of Evolution, stated "We are very excited about becoming a publicly traded company on the OTC Markets. We have aggressive goals and believe that we can reach them with our new corporate structure. With several thousand loyal Evolution Travel members, we are pleased that this will provide our members the potential opportunity to purchase at their own discretion a piece of what we are building together." Evolution and its flagship division, Evolution Travel (www.myevolutiontravel.com ), created a complete travel web portal with connectivity to the top travel industry providers, allowing its members to become professional home based travel agents and maximize benefits to them. Evolution Travel uses all of the social media tools to reach and promote its unique partners' reward programs that exceed industry norms.
Sylvain Desrosiers stated, "We are very excited for the shareholders of SITS to become part of this amazing company that is Evolution Enterprises. In my long career I have rarely seen a company, management team and group of salespeople so dynamic and fast growing as Evolution. David deserves a lot of credit for his accomplishments in such a short time. The energy that you witness from the Evolution organization and members is just incredible."
About Southern ITS International, Inc.
Southern ITS International, Inc. ("SITS") has been successful in providing electronic security and services to support government regulated high compliance industries. SITS has developed and delivered to the gaming and corrections sectors high compliance support systems facilitating the integration and implementation of complementary technologies. SITS, while it continues to deliver electronic security and networking infrastructure to those clients, will be exiting its historical businesses and entering the businesses of Evolution.
Precautionary and Forward-Looking Statements
This release contains "forward-looking statements" within the meaning of Section 27A of the Securities Act of 1933, as amended, and Section 21E of the Securities Exchange Act of 1934, as amended, and such forward-looking statements are made pursuant to the safe harbor provisions of the Private Securities Litigation Reform Act of 1995. "Forward-looking statements" describe future expectations, plans, results, or strategies and are generally preceded by words such as "may," "future," "plan" or "planned," "will" or "should," "expected," "anticipates," "draft," "eventually" or "projected." You are cautioned that such statements are subject to a multitude or risks and uncertainties that could cause future circumstances, events, or results to differ materially from those projected in the forward-looking statements, including the risks that actual results may differ materially from those projected in the forward-looking statements as a result of various factors, and other risks identified in the Company's disclosures or filings with OTC Markets, Inc. You are further cautioned that stocks of smaller companies like Southern ITS International, Inc. are inherently volatile and risky and that no investor should buy this stock unless they can afford the loss of their entire investment.
Contact: Information at: [email protected]
CONTACT: [email protected]
GSI Technology to Announce Third Quarter Fiscal Year 2021 Results on January 28, 2021


Vivienne Scarf "The River Keeper"
Large soft chiffon Vivienne scarf engineered for high resolution sublimation printing. Colors and tones are made to complement the dresses and tops made with the same original art print. Art creation of "River Keeper" by Nathalie Coutou. Dimensions: 19'' x 71''.


text:
package hydra;

import com.gemstone.gemfire.LogWriter;

import java.util.*;

/**
 *
 * A ClientMapper knows how to map client threads to thread groups.
 *
 */
public class ClientMapper {

  /**
   * Creates a thread mapper for mapping client records to thread groups.
   * @param threadGroups The thread groups clients will map to.  Maps the name
   *                     of a thread group to its {@link HydraThreadGroup}
   *                     object.
   */
  public ClientMapper( Map threadGroups ) {
    this.threadGroups = threadGroups;
    this.threadSubgroups = subgroupsFromGroups( threadGroups );
  }

  /**
   *  Maps the client records to the thread groups for this mapper and sets
   *  each client's thread group name to its mapped thread group.
   *  @param clientRecords the client records to map.
   *  @throws HydraRuntimeException if it is impossible to map the clients.
   *  @throws IllegalArgumentException if clientRecords is null or empty.
   */
  public void mapClients( Map cvmrs ) {
    if ( log().finestEnabled() ) {
      log().finest( "Mapping clients: " + cvmrs );
      log().finest( "Using groups: " + this.threadGroups );
    }
    mapClientsToGroups( cvmrs );
    assignThreadGroupIds( cvmrs );
  }

  /**
   *  Assigns logical thread group ids to clients, numbering from 0 to N-1,
   *  where N is the number of threads in the thread group.  Also assigns the
   *  thread group name as a non-transient field of the client record.
   */
  private void assignThreadGroupIds( Map cvmrs ) {
    HashMap map = new HashMap();
    for ( Iterator i = cvmrs.values().iterator(); i.hasNext(); ) {
      ClientVmRecord cvmr = (ClientVmRecord) i.next();
      for ( Iterator j = cvmr.getClients().values().iterator(); j.hasNext(); ) {
        ClientRecord cr = (ClientRecord) j.next();
        String tgname = cr.getThreadGroup().getName();
        Integer index = (Integer) map.get( tgname );
        if ( index == null ) {
          index = new Integer(0);
          map.put( tgname, index );
        }
        int tgid = index.intValue();
        cr.setThreadGroupName( tgname );
        cr.setThreadGroupId( tgid );
        map.put( tgname, new Integer( tgid + 1 ) );
      }
    }
  }

  /**
   *  Prints the client mapping.
   */
  public String getMappingAsString( Map cvmrs ) {
    StringBuffer buf = new StringBuffer();
    buf.append( "\nCLIENT MAPPING:" );
    for ( Iterator i = cvmrs.values().iterator(); i.hasNext(); ) {
      ClientVmRecord cvmr = (ClientVmRecord) i.next();
      for ( Iterator j = cvmr.getClients().values().iterator(); j.hasNext(); ) {
        ClientRecord cr = (ClientRecord) j.next();
        buf.append( "\n    " + cr.getThreadGroupName() + "\t" + cr );
      }
    }
    return buf.toString();
  }

  /**
   * Returns a list of lists containing the client mapping.
   */
  public List<List<String>> getMappingAsList(Map cvmrs) {
    List<List<String>> list = new ArrayList();
    for (Iterator i = cvmrs.values().iterator(); i.hasNext();) {
      ClientVmRecord cvmr = (ClientVmRecord)i.next();
      for (ClientRecord cr : cvmr.getClients().values()) {
        List sublist = new ArrayList();
        sublist.add(cr.getThreadGroupName());
        sublist.add(cr.toString());
        list.add(sublist);
      }
    }
    return list;
  }

  /**
   *  Maps clients to groups, trying all permutations.
   */
  private void mapClientsToGroups( Map cvmrs ) {
    // start with an order that has a reasonable chance of success
    Vector subgroups = sortSubgroups( this.threadSubgroups );
    boolean containsDefault = containsDefault( subgroups );

    PermutationGenerator pgen = null;
    if ( containsDefault ) {
      if ( subgroups.size() == 1 )
        pgen = new PermutationGenerator( subgroups.size() );
      else
        pgen = new PermutationGenerator( subgroups.size() - 1 );
    } else {
      pgen = new PermutationGenerator( subgroups.size() );
    }
    int[] indices;
    Vector permutation;
    while ( pgen.hasMore() ) {

      // sort the clients into buckets by vmid
      HashMap namemap = sortClientsByNameAndVmid( cvmrs );
      if ( log().finestEnabled() ) {
        log().finest( "Using buckets:\n" + nameMapToString(namemap) );
      }

      permutation = new Vector();
      indices = pgen.getNext();
      for ( int i = 0; i < indices.length; i++ )
        permutation.add( subgroups.elementAt( indices[i] ) );
      if ( containsDefault && subgroups.size() > 1 )
        permutation.add( subgroups.elementAt( subgroups.size() - 1 ) );

      if ( log().finestEnabled() ) {
        log().finest( "Trying subgroup permutation: " + permutation );
      }
      try {
        mapClientsToGroups( namemap, permutation );
        return; // success
      } catch( HydraConfigException e ) {
        if ( log().fineEnabled() ) {
          log().fine( "Unable to map clients:\n" + cvmrs +
                      "\nto thread groups:\n" + permutation +
                      "\nbecause: " + e.getMessage() );
        }
        // toss out unproductive work
        for ( Iterator i = cvmrs.values().iterator(); i.hasNext(); ) {
          ClientVmRecord cvmr = (ClientVmRecord) i.next();
          for ( Iterator j = cvmr.getClients().values().iterator(); j.hasNext(); ) {
            ( (ClientRecord) j.next() ).setThreadGroup( null );
          }
        }
      }
    }
    throw new HydraConfigException( "Failed to map clients:\n" + cvmrs +
                                    "\nto thread groups:\n" + this.threadGroups );
  }

  /**
   *  Returns whether or not the given list of sorted
   *  {@link HydraThreadSubgroup}s contains the
   *  {@linkplain HydraThreadGroup#DEFAULT_NAME default} group.
   */
  private boolean containsDefault( Vector subgroups ) {
    for ( int i = 0; i < subgroups.size(); i++ ) {
      HydraThreadSubgroup subgroup = (HydraThreadSubgroup) subgroups.elementAt(i);
      if ( subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        // make sure it's the last one in the list
        if ( i != subgroups.size() - 1 )
          throw new HydraInternalException( "Default thread subgroup is present but not last in list: " + subgroups );
        return true;
      }
    }
    return false;
  }

  /**
   *  Sorts the subgroups in the order they should be mapped.
   */
  private Vector sortSubgroups( Vector subgroups ) {
    // note that there should be only one default subgroup
    Vector sorted = new Vector();

    // first add groups any that specify client names and num vms
    // (except default subgroup)
    for ( Iterator i = subgroups.iterator(); i.hasNext(); ) {
      HydraThreadSubgroup subgroup = (HydraThreadSubgroup) i.next();
      if ( subgroup.getClientNames() != null
           && subgroup.getTotalVMs() > 0
           && ! subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        sorted.add( subgroup );
      }
    }

    // next add any that specify client names but not num vms (except
    // default subgroup)
    for ( Iterator i = subgroups.iterator(); i.hasNext(); ) {
      HydraThreadSubgroup subgroup = (HydraThreadSubgroup) i.next();
      if ( subgroup.getClientNames() != null
           && subgroup.getTotalVMs() == 0
           && ! subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        sorted.add( subgroup );
      }
    }

    // next add any that specify num vms but not client names (except
    // default subgroup)
    for ( Iterator i = subgroups.iterator(); i.hasNext(); ) {
      HydraThreadSubgroup subgroup = (HydraThreadSubgroup) i.next();
      if ( subgroup.getClientNames() == null
           && subgroup.getTotalVMs() > 0
           && ! subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        sorted.add( subgroup );
      }
    }

    // next add any that specify num threads (except default subgroup)
    for ( Iterator i = subgroups.iterator(); i.hasNext(); ) {
      HydraThreadSubgroup subgroup = (HydraThreadSubgroup) i.next();
      if ( subgroup.getClientNames() == null
           && subgroup.getTotalVMs() == 0
           && subgroup.getTotalThreads() > 0
           && ! subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        sorted.add( subgroup );
      }
    }

    // next add the default subgroup, if needed
    HydraThreadGroup defaultGroup =
        (HydraThreadGroup) this.threadGroups.get( HydraThreadGroup.DEFAULT_NAME );
    if ( defaultGroup != null ) {
      HydraThreadSubgroup defaultSubgroup = defaultGroup.getSubgroup(0);
      sorted.add( defaultSubgroup );
    }

    if ( sorted.size() != subgroups.size() )
      throw new HydraInternalException( "Failed to sort all subgroups:\nsorted --> " + sorted + "\nsubgroups --> " + subgroups );
    if ( log().fineEnabled() ) {
      log().fine( "\nINITIAL SORT FOR SUBGROUPS:\n" + subgroups + "\n\n" );
    }
    return sorted;
  }

  /**
   *  Maps clients to a particular ordering of subgroups
   */
  private void mapClientsToGroups( HashMap namemap, Vector subgroups ) {

    if ( log().finestEnabled() ) {
      log().finest( "Mapping clients to subgroups permutation: " + subgroups );
    }

    int mapped = 0;

    for ( Iterator i = subgroups.iterator(); i.hasNext(); ) {
      HydraThreadSubgroup subgroup = (HydraThreadSubgroup) i.next();

      // make sure there are enough clients for the subgroup
      int remaining = numRemainingClients( namemap, subgroup.getClientNames() );
      int needed = subgroup.getTotalThreads();
      if ( remaining < needed ) {
        throw new HydraInternalException
        (
          "Not enough clients (" + remaining + ") to map to: " + subgroup
        );
      }

      // map clients to the subgroup
      if ( log().finestEnabled() ) {
        log().finest( "Mapping clients to subgroup: " + subgroup );
      }
      if ( subgroup.getClientNames() != null
           && subgroup.getTotalVMs() > 0
           && ! subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        mapClientsToSubgroupNamedExact( namemap, subgroup );

      } else if ( subgroup.getClientNames() != null
           && subgroup.getTotalVMs() == 0
           && ! subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        mapClientsToSubgroupNamed( namemap, subgroup );

      } else if ( subgroup.getTotalVMs() > 0
           && ! subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        mapClientsToSubgroupExact( namemap, subgroup );

      } else if ( subgroup.getTotalVMs() == 0 && subgroup.getTotalThreads() > 0
           && ! subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        mapClientsToSubgroupRandom( namemap, subgroup );

      } else if ( subgroup.getName().equals( HydraThreadGroup.DEFAULT_NAME ) ) {
        mapClientsToSubgroupRemaining( namemap, subgroup );

      } else {
        throw new HydraInternalException( "Unexpected case: " + subgroup );
      }
//      log().info( "namemap = " + namemap );
      ++mapped;
    }

    // make sure the mapping is complete
    if ( mapped != subgroups.size() )
      throw new HydraInternalException( "Client mapping skipped one or more subgroups" );
    if ( numRemainingClients( namemap ) != 0 )
      throw new HydraInternalException( "Client mapping skipped " + numRemainingClients( namemap ) + " clients: " + nameMapToString(namemap) );
  }

  /**
   *  Maps clients as evenly as possible across the specified number of vms with
   *  the specified client names (does not spread evenly across client names).
   */
  private void mapClientsToSubgroupNamedExact( HashMap namemap,
                                               HydraThreadSubgroup subgroup ) {
    int totalThreads   = subgroup.getTotalThreads();
    int totalVMs       = subgroup.getTotalVMs();
    Vector clientNames = subgroup.getClientNames();

    int lowNumThreads  = totalThreads / totalVMs;
    int highNumThreads = lowNumThreads + 1;
    int numHighVMs     = totalThreads % totalVMs;
    int numLowVMs      = totalVMs - numHighVMs;

    // @todo lises spread vms evenly across names

    int mapped = 0;
    for ( Iterator it = subgroup.getClientNames().iterator(); it.hasNext(); ) {
      String clientName = (String) it.next();
      HashMap vmidmap = (HashMap) namemap.get( clientName );
      if ( vmidmap == null )
        throw new HydraInternalException( "No clients with name " + clientName );
      for ( Iterator jt = vmidmap.values().iterator(); jt.hasNext(); ) {
        Collection crs = (Collection) jt.next();
        if ( numHighVMs > 0 && crs.size() >= highNumThreads ) {
          for ( int i = 0; i < highNumThreads; i++ ) {
            mapRandomClientWithVmid( crs, subgroup );
            ++mapped;
          }
          --numHighVMs;
        }
        else if ( numLowVMs > 0 && crs.size() >= lowNumThreads ) {
          for ( int i = 0; i < lowNumThreads; i++ ) {
            mapRandomClientWithVmid( crs, subgroup );
            ++mapped;
          }
          --numLowVMs;
        } // else this vm doesn't work
      }
    }
    // make sure we scheduled them all
    if ( mapped != totalThreads )
      throw new HydraConfigException( "Unable to evenly distribute " + totalThreads + " threads across " + totalVMs + " vms for: " + subgroup );
  }

  /**
   *  Maps clients at random across all vms with the specified client names.
   */
  private void mapClientsToSubgroupNamed( HashMap namemap,
                                          HydraThreadSubgroup subgroup ) {
    int totalThreads = subgroup.getTotalThreads();
    while ( totalThreads > 0 ) {
      mapRandomClientWithNames( namemap, subgroup );
      --totalThreads;
    }
  }

  /**
   *  Maps clients as evenly as possible across the specified number of vms.
   */
  private void mapClientsToSubgroupExact( HashMap namemap,
                                          HydraThreadSubgroup subgroup ) {
    int totalThreads = subgroup.getTotalThreads();
    int totalVMs     = subgroup.getTotalVMs();

    int lowNumThreads  = totalThreads / totalVMs;
    int highNumThreads = lowNumThreads + 1;
    int numHighVMs     = totalThreads % totalVMs;
    int numLowVMs      = totalVMs - numHighVMs;

    int mapped = 0;
    for ( Iterator it = namemap.values().iterator(); it.hasNext(); ) {
      HashMap vmidmap = (HashMap) it.next();
      for ( Iterator jt = vmidmap.values().iterator(); jt.hasNext(); ) {
        Collection crs = (Collection) jt.next();
        if ( numHighVMs > 0 && crs.size() >= highNumThreads ) {
          for ( int i = 0; i < highNumThreads; i++ ) {
            mapRandomClientWithVmid( crs, subgroup );
            ++mapped;
          }
          --numHighVMs;
        }
        else if ( numLowVMs > 0 && crs.size() >= lowNumThreads ) {
          for ( int i = 0; i < lowNumThreads; i++ ) {
            mapRandomClientWithVmid( crs, subgroup );
            ++mapped;
          }
          --numLowVMs;
        } // else this vm doesn't work
      }
    }
    // make sure we scheduled them all
    if ( mapped != totalThreads )
      throw new HydraConfigException( "Unable to evenly distribute " + totalThreads + " threads across " + totalVMs + " vms for: " + subgroup );
  }

  /**
   *  Maps clients at random across all available vms.
   */
  private void mapClientsToSubgroupRandom( HashMap namemap,
                                           HydraThreadSubgroup subgroup ) {
    int totalThreads = subgroup.getTotalThreads();
    while ( totalThreads > 0 ) {
      mapRandomClient( namemap, subgroup );
      --totalThreads;
    }
  }

  /**
   *  Maps all remaining clients.
   */
  private void mapClientsToSubgroupRemaining( HashMap namemap,
                                              HydraThreadSubgroup subgroup ) {
    for ( Iterator i = namemap.values().iterator(); i.hasNext(); ) {
      HashMap vmidmap = (HashMap) i.next();
      for ( Iterator j = vmidmap.values().iterator(); j.hasNext(); ) {
        Collection bucket = (Collection) j.next();
        for ( Iterator k = bucket.iterator(); k.hasNext(); ) {
          ClientRecord cr = (ClientRecord) k.next();
          if ( log().finestEnabled() ) {
            log().finest( "Mapping remaining " + cr + " to " + subgroup );
          }
          mapClient( cr, subgroup, k );
        }
      }
    }
  }

  /**
   *  Maps a random client with one of the specified client names to the
   *  subgroup and removes it from its bucket.
   */
  private void mapRandomClientWithNames( HashMap namemap,
                                         HydraThreadSubgroup subgroup ) {
    Vector clientBucketsWithName = new Vector();
    for ( Iterator i = subgroup.getClientNames().iterator(); i.hasNext(); ) {
      String clientName = (String) i.next();
      HashMap vmidmap = (HashMap) namemap.get( clientName );
      clientBucketsWithName.addAll( vmidmap.values() );
    }
    int numRemaining = 0;
    for ( Iterator i = clientBucketsWithName.iterator(); i.hasNext(); ) {
      Collection crs = (Collection) i.next();
      numRemaining += crs.size();
    }
    GsRandom rng = TestConfig.tab().getRandGen();
    int currentIndex = 0;
    int randomIndex = rng.nextInt( 0, numRemaining - 1 );
    for ( Iterator i = clientBucketsWithName.iterator(); i.hasNext(); ) {
      Collection crs = (Collection) i.next();
      for ( Iterator j = crs.iterator(); j.hasNext(); ) {
        ClientRecord cr = (ClientRecord) j.next();
        if ( currentIndex == randomIndex ) {
          if ( log().finestEnabled() ) {
            log().finest( "Mapping client named " + cr + " to " + subgroup );
          }
          mapClient( cr, subgroup, i );
          // must remove it from the namemap as well as the copy
          if ( log().finestEnabled() ) {
            log().finest( "Removing client " + cr + " in thread group "
                        + cr.getThreadGroupName() + " from namemap" );
          }
          HashMap vmidmap = (HashMap) namemap.get( cr.vm().getClientName() );
          Collection bucket = (Collection) vmidmap.get( cr.vm().getVmid() );
          bucket.remove( cr );
          return;
        } else {
          ++currentIndex;
        }
      }
    }
  }

  /**
   *  Maps a random client with a particular vmid to the subgroup and removes it
   *  from its bucket.
   */
  private void mapRandomClientWithVmid( Collection crs,
                                        HydraThreadSubgroup subgroup ) {
    GsRandom rng = TestConfig.tab().getRandGen();
    int currentIndex = 0;
    int randomIndex = rng.nextInt( 0, crs.size() - 1 );
    for ( Iterator i = crs.iterator(); i.hasNext(); ) {
      ClientRecord cr = (ClientRecord) i.next();
      if ( currentIndex == randomIndex ) {
        if ( log().finestEnabled() ) {
          log().finest( "Mapping exact " + cr + " to " + subgroup );
        }
        mapClient( cr, subgroup, i );
        return;
      } else {
        ++currentIndex;
      }
    }
  }

  /**
   *  Maps a random client to the subgroup and removes it from its bucket.
   */
  private void mapRandomClient( HashMap namemap, HydraThreadSubgroup subgroup ) {
    GsRandom rng = TestConfig.tab().getRandGen();
    int randomIndex = rng.nextInt( 1, numRemainingClients( namemap ) - 1 );
    int currentIndex = 0;
    for ( Iterator i = namemap.values().iterator(); i.hasNext(); ) {
      HashMap vmidmap = (HashMap) i.next();
      for ( Iterator j = vmidmap.values().iterator(); j.hasNext(); ) {
        Collection crs = (Collection) j.next();
        for ( Iterator k = crs.iterator(); k.hasNext(); ) {
          ClientRecord cr = (ClientRecord) k.next();
          if ( currentIndex == randomIndex ) {
            if ( log().finestEnabled() ) {
              log().finest( "Mapping random " + cr + " to " + subgroup );
            }
            mapClient( cr, subgroup, k );
            return;
          } else {
            ++currentIndex;
          }
        }
      }
    }
  }

  /**
   *  Maps the client to the subgroup and removes it from its bucket.
   */
  private void mapClient( ClientRecord cr, HydraThreadSubgroup subgroup,
                          Iterator bucket ) {
    String name = cr.getThreadGroupName();
    if ( name != null ) {
      throw new HydraInternalException
      (
        "Already mapped " + cr + " to " + name + " -- can't map it to "
        + subgroup.getName()
      );
    }
    HydraThreadGroup group =
      (HydraThreadGroup) this.threadGroups.get( subgroup.getName() );
    cr.setThreadGroup( group );
    bucket.remove(); // the iterator is at this client
    if ( log().finestEnabled() ) {
      log().finest( "Removing client " + cr + " in thread group "
                  + cr.getThreadGroupName() + " from bucket" );
    }
  }

  /**
   *  Sorts the clients into a map of maps of vector buckets keyed by client
   *  name then vmid.
   */
  private HashMap sortClientsByNameAndVmid( Map cvmrs ) {
    HashMap namemap = new HashMap();
    for ( Iterator i = cvmrs.values().iterator(); i.hasNext(); ) {
      ClientVmRecord cvmr = (ClientVmRecord) i.next();
      String clientName = cvmr.getClientName();
      Map vmidmap = (Map) namemap.get( clientName );
      if ( vmidmap == null ) {
        vmidmap = new HashMap();
        namemap.put( clientName, vmidmap );
      }
      vmidmap.put( cvmr.getVmid(), cvmr.getCopyOfClientCollection() );
    }
    return namemap;
  }

  /**
   *  Returns a nicely formatted string that describes the given name map.
   */
  private static String nameMapToString( Map namemap ) {
    StringBuffer sb = new StringBuffer("Name map:\n");

    for (Iterator clientNames = namemap.keySet().iterator();
         clientNames.hasNext(); ) {
      String clientName = (String) clientNames.next();
      sb.append("  ClientName ");
      sb.append(clientName);
      sb.append("\n");

      Map vmidmap = (Map) namemap.get(clientName);
      for (Iterator vmids = vmidmap.keySet().iterator();
           vmids.hasNext(); ) {
        Integer vmid = (Integer) vmids.next();
        sb.append("    vm_");
        sb.append(vmid);
        sb.append(" -> ");

        Collection crs = (Collection) vmidmap.get(vmid);
        for (Iterator iter = crs.iterator(); iter.hasNext(); ) {
          sb.append(iter.next());
          sb.append(" ");
        }

        sb.append("\n");
      }
    }
    return sb.toString();
  }

  /**
   *  Returns the number of remaining clients in the namemap with the given
   *  client names.
   */
  private int numRemainingClients( HashMap namemap, Vector clientNames ) {
    if ( clientNames == null ) { // can use any names
      return numRemainingClients( namemap );
    } else {
      int count = 0;
      for ( Iterator i = clientNames.iterator(); i.hasNext(); ) {
        String clientName = (String) i.next();
        HashMap vmidmap = (HashMap) namemap.get( clientName );
        if ( vmidmap == null ) {
          throw new HydraInternalException( "No clients with name " + clientName );
        } else {
          for ( Iterator j = vmidmap.values().iterator(); j.hasNext(); ) {
            Collection crs = (Collection) j.next();
            count += crs.size();
          }
        }
      }
      return count;
    }
  }

  /**
   *  Returns the number of remaining clients in the namemap.
   */
  private int numRemainingClients( HashMap namemap ) {
    int count = 0;
    for ( Iterator i = namemap.values().iterator(); i.hasNext(); ) {
      HashMap vmidmap = (HashMap) i.next();
      for ( Iterator j = vmidmap.values().iterator(); j.hasNext(); ) {
        Collection crs = (Collection) j.next();
        count += crs.size();
      }
    }
    return count;
  }

  /**
   * Returns the subgroups from the set of groups
   * @param groups Maps thread group name to its {@link HydraThreadGroup}.
   * @return A <code>Vector</code> of {@link HydraThreadSubgroup}s.
   */
  private Vector subgroupsFromGroups( Map groups ) {
    Vector subgroups = new Vector();
    for ( Iterator i = groups.values().iterator(); i.hasNext(); ) {
      HydraThreadGroup tg = (HydraThreadGroup) i.next();
      for ( Iterator j = tg.getSubgroups().iterator(); j.hasNext(); ) {
        HydraThreadSubgroup tsg = (HydraThreadSubgroup) j.next();
        subgroups.add( tsg );
      }
    }
    if ( log().fineEnabled() ) {
      log().fine( "\nSUBGROUPS:\n" + subgroups + "\n\n" );
    }
    return subgroups;
  }

  private static LogWriter log() {
    return Log.getLogWriter();
  }

  private Map threadGroups;
  private Vector threadSubgroups;
}

redpajama_set_name: RedPajamaGithub


text:
Turkish Cypriots prepare for vital leadership vote
by Kyriacos Kiliaris
Turkish Cypriot leader Mustafa Akinci may not make the run-off in April elections for the leadership of his community while the outcome could spell danger for the Cyprus peace process.
Analysts argued the 26 April election is of vital importance for the future of the Turkish Cypriot community and stalled peace talks as the election of a hardliner would make life difficult.
Mustafa Akinci, who according to analysts has been clear in his stance against Turkey's meddling in the affairs of the Turkish Cypriot community, is in a bit of a tight spot as he falls in the polls.
The Kibris Postasi poll has right-wing coalition leader Ersin Tatar first on 32%, followed by left-wing Tufan Erhurman with 23%, Akinci is a lowly third with 18% followed by the People's Party (HP) and the ruling coalition's second-in-command Kudret Ozersay with 10%.
Some 5,000 participated in the online survey which was carried out between 15-21 January in the above survey.
A previous opinion poll carried out earlier in January by Turkish company Gezici showed Akinci going through to the second round as he appealed to 28.8% of voters behind UBP's Ersin Tatar who tops the poll with 34.2%.
According to Gezici, Akinci will lose in the second round to Tatar as just 30% of voters asked said that they would cast a vote for him. Tatar's support in the second round will increase to 40%, said Gezici.
Ahmet Sozen Professor of Politics at the Eastern Mediterranean University in Famagusta said the elections are crucial despite the widespread belief among Greek Cypriots that it does not matter who is elected as Turkey is in the driver's seat.
"The Turkish Cypriots are going to the polls to elect their chief negotiator for the Cyprus problem, essentially giving the go-ahead to the policy that candidate represents," argued Sozen.
The EMU professor said despite Turkey being a factor in determining policies followed by Turkish Cypriots on the Cyprus problem and domestic governance, "none the less the person elected to lead the community does matter and will have an influence on which direction negotiations will go down".
He said that in elections for the leadership, a candidate's track record is of great importance, even more so than the party backing his candidacy.
"At the moment Mustafa Akinci clearly represents the strive for a bizonal and bicommunal federal solution to the Cyprus problem. His track record has been consistent with the parameters endorsed by the two sides in the 1970s."
Akinci is seen as a politician who has developed left-wing policies not always in line with Turkey. He is known for his head-on confrontation with Turkish President Recep Tayyip Erdogan.
Sozen expects Akinci to get a quarter of the vote to make the run-off as a result of his stance on the Cyprus problem while also gaining points from his stance towards Turkey.
Akinci is threatened by the right-wing leader of the coalition Ersin Tatar and Tufan Erhurman of the left-wing CTP.
Erhurman and his CTP declared they are seeking a Cyprus solution based on a bicommunal federation, however, what differentiates him from Akinci is that he believes if the Greek Cypriots are not ready for such a solution, then the Turkish Cypriots should go it alone.
"CTP is also critical towards Akinci for not using his position as the leader of the Turkish Cypriots, which is the only one recognised internationally, actively visiting European capitals promoting the community's case," Sozen said.
Tatar is the leader of the UBP, traditionally reactionary when it comes to the Cyprus problem, with a big part of the party openly supporting a two-state solution.
Tatar is expected to come out on top in the first round of the elections.
Who will stand up to Turkey?
"The former negotiator Kudret Ozersay and his HP do not totally reject the idea of a federation but have said time after time that other options should be on the table".
Ozersay is seen as Ankara's chosen one by many Turkish Cypriots due to his close ties with the Turkish Foreign Minister Mevlut Cavusoglu and other Turkish state officials.
"These ties, coupled with his inconsistency in his declarations and policies, have cost him to lose a large number of supporters in the north," argued Sozen.
He said that participation in the elections will be a factor in their outcome.
"The last election saw just 63% participating in the first round and 66% in the second. There is dissolution among Turkish Cypriots who have lost hope for a Cyprus solution.
If these people along with some boycotters turn towards pro-solution candidates, then Akinci and Erhurman have a greater chance of being elected."
Turkish Cypriot journalist and political analyst Esra Aygin sees the upcoming elections as of vital importance for the Turkish Cypriots and the Greek Cypriots.
"For the Greek Cypriots its quite clear, who do they want to see sitting at the other end of the table? A hardliner or a politician genuine in his intentions for a bizonal, bicommunal solution?"
Aygin said that apart from the issue of the Cyprus problem, these elections are of existential importance for the Turkish Cypriot community.
"At a time when Ankara's meddling in the north is at its peak, the community needs someone to stand up for its rights.
Even in the case that no solution is found, the community needs someone to stand up and say that we are not willing to bow to Turkey."
Aygin believes that Akinci has the best credentials to lead the Turkish Cypriots for another five years.
"Tufan Erhurman during his 15-month tenure as leader of the ruling coalition he did not refer to a solution with the fear of upsetting Turkey, he also took pride in never crossing to the south while he was head of the administration in the north".
She said it's very important for the future of peace talks and Greek Cypriots who are fighting for a solution to see the Turkish Cypriot community backing a candidate who is openly fighting in the interest of peace and against the "Turkification" of the north.
Turkish Cypriots
Kyriacos Kiliaris
Skills shortage driving unemployment
Cyprus can weather financial storm clouds
2022: A year of financial pain but little gained
Good year for retailers
Cyprus says first suspected case of coronavirus is negative
Cyprus economy suffering a chronic liquidity squeeze

redpajama_set_name: RedPajamaCommonCrawl


Visual art in Florence during the 15th century featured architecture, painting and sculpture. ... The finest European sculptor of the 15th century (quattrocento).
Renaissance Paragone: Painting and Sculpture ... study of ancient art inform the arguments on either side of the painting/sculpture paragone. ... These examples often involve paintings which imitate sculpture and sculptures that imitate painting, ... views about the importance of the visual arts and the social status of artists.


text:
7 Movies and…
7 Movies and Shows on Streeming App If You are Missing Your Family
Kunal Nanda
In the past few weeks, watching movies and TV shows with the family has become a ritual with their family and loved ones. But for those of you who stay away from family and can't spend as much time with them as you want, let these real-life families keep you company and fun. Whenever you lose your parents, siblings, and other family members, you can watch these family movies and shows on Amazon Prime Video, Netflix, Disney + Hotstar, and SonyLive.
7 Best Family Movies and Shows on Streaming App If You are Missing Your Family
DIL DHADAKNE DO – NETFLIX Fa
When a lucky Punjabi family, Mehras, decides to take a cruise trip to celebrate the parents' wedding anniversary, do they hope that the trip will change their lives forever and give them love and leave the family with new values? No matter how many conflicts you have with your family, they will back you on the same day. Directed by Zoya Akhtar, Dil Dhadakne Dolo stars Anil Kapoor, Shefali Shah, Priyanka Chopra, Ranveer Singh, Anushka Sharma, Farhan Akhtar, and Vikrant Massey.
BADHAAI HO – AMAZON PRIME VIDEO
The story revolves around a 25-year-old man and how he knew about his mother's accidental pregnancy. From the embarrassment and humiliation of their parents to accepting the reality and supporting their people, Badhai Ho shows how this family decision strikes society. Starring Ayushmann Khurrana, Nina Gupta, Surekha Sikri, Gajarao Rao, and Sanya Malhotra, this comedy-drama is one of the two highest-grossing Bollywood films of 2018, winning two National Film Awards – Best Popular Best Entertainment and Best Supporting Actress. ).
YEH MERI FAMILY – NETFLIX
The comedy web series, starring Vishwesh Bansal, Mona Singh, Akash Khurana, Ahan Nirban, and Ruhi Khan, was set in Jaipur in 1998 and follows the Gupta family, with their daily struggles, trials and tribulations and small joys. My family also takes us on a nostalgia trip when summer holidays are full of holiday homework, birthday parties, school candy, and tuition and classwork make us nervous.
Khichdi – Disney + Hostar
Who can forget a cynical Parekh family trying to solve problems in unusual and unpredictable ways? This show and characters are an important part of our childhood and it still brings a smile to our faces.
Do Dooni Char – Netflix
The film revolves around a middle-class family in Delhi's Lajpat Nagar. The father is a math teacher at a school and is constantly struggling to meet his family's wishes. Despite not being able to meet the ends, the family dreams of buying a car. Can they buy one? You need to watch the movie to know this. Starring Rishi Kapoor and Neetu Kapoor, this lighthearted comedy film gives us a glimpse of all the struggles our parents have gone through to fulfill our wishes.
Sarabhai V.S. Sarabhai – Disney + Hostar
Growing up, we admit that popular mother-in-law serials were a guilty pleasure for many of us because TV remotes were under the control of our mothers. But, when Maya Sarabhai came into our lives, the mother-in-law got a new perspective. The character is an important part of Indian pop culture and holds a special place in our memories. Who can forget Indrawardhana Sarabhai's punch line and Rosesh's iconic poem?
Piku – Sonilive
Starring Deepika Padukone, Amitabh Bachchan, and Irrfan Khan, the story revolves around the father-daughter relationship. Of all the problems in his life, most are caused by his father's chronic constipation, which often causes him to constantly worry about the little things. Amidst their pleas, the two take a road trip to Kolkata, which they know is a strong support system for each other.
Follow us on Instagram – BollywoodNewsCast
Tags: bollywood family movies bollywood family movies and shows family movies family movies and shows
online says:
Greate pieces. Keep writing such kind of information on your site. Florenza Paco Ahouh


text:
Frenetics Broken Hand EP
Tue 15th May 2012
lukesk
Drums starting up like The Gun Club, thundering along. Promising. Then the singer arrives, delivering mock-Estuary straight through his nostrils.
The music's pretty solid on the first track, Ella, but the singer is Marmite. I assume some might like his diction, the way he pronounces words with excess syllables. Oh, by the way, I hate Marmite. He's clearly putting it on like some cheap rate supermarket non-brand knock-off Marmite. It's just salty paste! Flow, my tears, the ear kidneys said.
Second track Satellites disappoints me as I almost thought it might be a cover of a TV On The Radio song. Instead it loses the thunder drums of the first track, slows down a bit, and starts to sound like trad indie rock filtered through LA punk. Look at that damn waveform too (thanks Soundcloud) because it is looking a wee bit squashed to me, like someone still thinks over-compression is a really good idea.
As it goes on, track three, track four, I really cannot help but think the singer is a cheap Estuary clone of Alex Turner, without the talent for lyrical witticisms. Oh you come from, "the thriving Leeds and Sheffield scene"? Yes well that doesn't mean you have to lift a vocal delivery wholesale from one of the biggest exports of said scene.
The guitars, they slip from the ear as soon as the songs are over. Nothing interesting occurring. I will give the drummer his due though, he's got something. And last track, Swing Kids, shows the band drop the punky structures for the first half at least, and a good use of dynamics lets the song breathe and move towards interesting territory.
Throughout the whole EP there's a sense of overproduction. Yep, there's a management company involved. From the sanding down of the guitar sounds to the point of losing any teeth they might have had, to the masturbatory terms of the press release, "formidable prospect," "swaggering hooks," and, "mountain sized riffs and climactic choruses," it all reeks of marketing push.
Frenetics' release blurb name drops Richard Hell, The Velvet Underground and Iggy Pop. Shame they don't manage to sound anything like any of those. Instead we get MOR with a punk twist, and a singer who clearly has, if not personality, then definitely ego. I'm not asking for improv, nor chaos theory, but at least find a way to subvert expectations. If I can plan your song out before I've heard the whole thing you're in trouble. Frenetics are in trouble.
Listen to the release here
Forums - Reviews and Articles - Frenetics - Broken Hand EP


text:
Room 217 celebrates its 10th birthday!
by Various Writers
A small social enterprise with a big footprint. Ten years into the story, a variety of stakeholders came together to look back, stand back, and be moved by personal stories and a growing network of collaboration. It was the 10th anniversary celebration at the Room 217 Foundation headquarters in Port Perry on May 30, 2019 .
Over dessert and coffee, at an event emceed by Board Chair Barbara Reynolds, we heard story after story. Rick Firth, CEO of Hospice Palliative Care Ontario and Past President of the Canadian Hospice Palliative Care Association spoke of a decade of very warm relations between 217 and palliative care. Beautiful graphic design work on all products by Paul Huntington has accentuated 217's appeal over the decade. He referred to the power of R217 music in his own experience of being with his mom as she was dying. Rooom 217 Education and Research Manager Chelsea Mackinnon spoke of the importance of providing evidence-based support by evaluating the effects of music on isolation and loneliness in long-term care settings through the Partners project. In addition, her students at McMaster University have done a total of 2,700 hours of research work in support of the Foundation. Dr. Lee Bartel, a Director of Room 217, just returned from an international health and wellness symposium in Portugal , where he presented the 217 framework for music care. He shared where music care fits into the growing sector of music and health. One of his colleagues suggested that music care is "the missing piece."
A video of testimonials painted the picture in vivid colours: caregivers spoke of the effects of Room 217 music products, programs and services for them and their loved ones. Professionals in long- term care observed different emotions being touched, people with dementia interacting and coming alive socially while the interactive Pathways program was runnning. Music Care Conference participants related the power of coming together as a diverse community of music care folks and being propelled into new applications of music with special needs clients, school children, etc. A resident in long-term care involved in a music-making session using hand bells spoke energetically of making "my own story" in the bell choir. A recreational therapist marvelled that colleagues of hers who had no confidence in music-making responded to the Room 217 training and as a group created a song, then performed it for the residents and observed how the "words came back" in the songs!
Bev and I, Room 217 co-founders, spoke too. I shared how the resources of Room 217 have given me the tools and the confidence to sing with my mom who has late stage Alzheimers. Bev Foster invited all of us to imagine music care being available in homes, and in patient care plans.
We were honoured to hear the creative genius, sensitive lyrics and seasoned musical talent of Murray McLauchlan, Room 217 board member, who performed the world premiere of a song written for the occasion along with bassist Victor Bateman. Some of the lyrics:
"Without a song, where would I be? …. A song can find the words … bring back the memory that was lost to me … I will find a way to live, to give. I'll give all my love to you." ©2019, Murray McLauchlan
Founding chair Patty Bowman spoke a rich and affirming blessing on each stakeholder. It was an evening of taking stock, gratitude and sense of shared vision for what is possible in the future of Room 217's unique contribution to wellness in the world.
Rob Foster is one of the co-founders of Room 217 Foundation.
music care
Effects of Music on Anxiety in Heart Attack Patients