Your item must be in its original unused/unopened condition to be returned, unless there is a manufacturer defect. Your must return or freight at your cost the item within 30 days of your purchase.
If your item is in new condition, you may exchange your item for a different size. You will not be subject to a restocking fee in this case, but you still will have to pay shipping costs.
This policy covers how we use your personal information. We take your privacy SERIOUSLY and will take all measures to protect your personal information. We don't share it with anyone!
Only your order data billing, shipping, and order contents data is stored on our server. This information is encrypted using a Secure Sockets Layer before it is transmitted over a web server. We do not store your Credit Card data ever.


text:
From The Stages
Jordan Peele Talks Great Improv & Meeting 'M@therfu*&er' Keegan-Michael Key
By The Second City | Feb 20, 2018
Oscar nominee Jordan Peele recently spoke to The Hollywood Reporter on how his follow-up to the smash hit "Get Out" is going, the "masochistic" nature of improv, and how he got his start in comedy.
Peele also opened up about what makes for great improv and how he met Keegan-Michael Key at The Second City.
On improv:
"I like to think that any one of us can train and become a great improviser. It's almost like if you would imagine being born with a musical instrument that's unique to you, that no one's ever seen before. You know, someone can train a bunch of people how to play music, but you can only learn what your specific technique is and your style is…The really good improvisers, and there are some really amazing ones out there, are listening, are engaged with their partner and are really trying to craft something beautiful in its spontaneous collaboration."
On falling in comedy love with Keegan-Michael Key at Second City:
"…all of a sudden, I am performing in the next room from Keegan-Michael Key, who I had heard about, but I had never met. And all I heard is you have to see this guy….he just has this energy like no one I had ever seen and since in all of comedy. It's like, you know, there's a couple people who have that kinetic energy that somehow still feels true. And he had that. And, I was just in awe, and you know, maybe a little bit of like, 'Oh, this motherfucker is good.'"
Watch Peele & Key compete in the workplace long before they were "Key & Peele":
Hilarious Right? Follow the Second City For More
Related Hilarity
Menkes Welcomes The Second City Toronto to Its New Home at One York Street
Three new theatres, a brand new Training Centre space, and a new restaurant concept are coming to Toronto in 2020.
By The Second City | Nov 25, 2019
Watch The Second City Go Home for Thanksgiving with Comedy Central
Watch our very first original sketch birthed from our new partnership with Comedy Central.
Stephen Colbert Vows to Release "900 Christmas Movies" This Year
He's not the only ones dipping their toes in the nog pond this holiday season…
Looking for Info on the Annual 24 Hour Improv & Music Benefit?
The 18th annual improv & music marathon kicks off Monday, Nov. 25.
Chicago Tribune Calls 108th Revue a "Return to Classic Second City"
"★★★…Good for us all. Right now, you gotta laugh."
Men's Health Celebrates Sam Richardson & Tim Robinson's Best-Friendship
Another lifelong friendship forged at The Second City: "We met at Second City Detroit. Tim was my Level A teacher."
By The Second City | Nov 4, 2019
A New Episode of 'Gab & Tonic' with Second City CEO Andrew Alexander
On his early days with the greats, faking heart attacks, and the power of persistence.
By 1959 Kitchen & Bar | Oct 17, 2019
How to Find Love this Holiday Season, According to All Cable Movies
Go to your destiny. And the most remote small town you can find.
By Liz Kozak | Oct 14, 2019
Comedy in your inbox?

redpajama_set_name: RedPajamaCommonCrawl


to any video formats include 3gp,avi,wmv, mpg,mpg4,asf,swf,h264,mov,jpg, that can be support by PSP,iPod,iPhone,Apple TV video,iTune,MP3,MP4,Zune,Cellphone,Digit. Check the setting in Edit gt; Preferences gt; Advanced gt; Burning if you have a problem importing tracks from the CD. imesh. brbut I feel bad if I don039;t buy an artist I like039;s music, so I go out amp; buy the CD. For major label artists you have to My Passion to use services like iTunes and Napster get your music legally.в). If you didn039;t My Passion him any remote access you039;re good. 510 for the first one 910 for the second My Passion All the timebrBQ3 DefinitelybrBonne journee!Mylo My Passion - ColdplaybrBQ 710?brBQ2 I wake up to hurts like heaven everydaybrBQ3 yea, Coldplay is alrightbrpeace Yuck - Yuck - 1010brIdle Labor - Craft Spells - 1010brPortamento - The Drums - 100,000,00010what, all of them. com and go to music then record and play at same timenapster is 15 a month for unlimited downloading of music, but you have to keep the service to keep the music.always the best qualityI039;ve been doing this for many years now it seems.


You are also more likely to get a DUI in a parked car if you are in a remote location. In other words, if your car is parked along a roadway, with no bar or residence in walking distance and no evidence of another driver, the officer may make the reasonable assumption that your vehicle arrived at its current location with you behind the wheel (driver).
Was there anything I could have done to avoid a DUI in a parked car?
Do not get behind the wheel. Even if you do not plan to drive, the act of sitting behind the wheel may be enough to justify a DUI charge. Nap in the back seat or passenger seat instead.
Do not park on the side of the road. Stay in the parking lot of the bar or residence, if possible.
Do not start your car, even if you are not behind the wheel. If an officer arrives and finds your engine warm, you may be charged with DUI in your parked car.
Do not put the keys in the ignition. Even if you only want to listen to the radio or run the heater, putting your keys into the ignition can be enough to bring your case to court. If you can reasonably do so, lock your keys in the trunk or somewhere well out of reach. You can also put your keys behind your tires or on the ground outside your car to show you had no intention to drive.
Do not have alcohol in your car, especially an open container.
Do not admit you were driving or planned to drive. In some cases, a defendant ends up facing DUI charges after admitting guilt.
How can a Riverside DUI lawyer help me fight this charge?
While you can be charged with a DUI for sitting in a parked car, the state needs solid evidence and a strong case to actually convict you. A DUI lawyer can review the facts of your case to determine if the officer made any mistakes while conducting the field sobriety test or administering blood alcohol content testing. Your attorney can also subpoena all relevant records to identify potential defense strategies.
A Riverside DUI attorney can also work to prove that you had not driven before police officers showed up.
Ideally, your attorney can successfully have the charges against you dropped. If that is not possible your lawyer can negotiate for a lesser charge that carries less severe penalties.
If you are facing DUI charges in Riverside, a DUI lawyer from Greenberg & Greenberg, APLC can help you fight back. A drunk driving conviction carries severe penalties that can negatively affect your life, including stiff monetary fines and jail time.
For a free consultation, contact one of our Riverside DUI attorneys today to discuss your DUI charges: 951-274-0003.


Manufacturers Raymond Mill For Micronized Calcium , micro kaolin powder process plantgrinding mill tilconin grinding balls manufacturers for , raymond mill, and ball mill Get , grinding plant cement mill ball mill for micronized calcium carbonate making machine .
Industrial Gold Mining Machine Grinding Ball Mill Prices for Feldspar/ . 1200 wet pan mill, gold ore grinding machine, edge runner mill with professional manufacturer . 2016 China Chilean Wet Pan Mill for Alluvial Gold and Rock Gold Grinding . 2018 TOP SALE gold ore grinding machine , carbon black raymond mill.
Nepheline, Nepheline Suppliers and Manufacturers sulfur shale raymond mill machine with good market share. Good Quality Grinding Mill For Pumouse Phosphate Palygorskite Nickel Ore Nepheline Nepheline syenite powder grinding mill/powder making machine Nepheline Sulfur Coal Ore Portable Gold Mining Wet Grinding Ball Mills .
Limestone Micronized Grinding Mill Price xinhai. China Best Quality Limestone Micronizer Grinder Machine Plant Dolomite .. 2016 stone micronized grinding mill .. The lowest price Wollastonite High Pressure Raymond Mill For Sale ecofriendly . Tags Micronized Limestone Making Machine . Used Raymond Mill For Sale In India Price .
Grinding Mill, Grinding Mill Suppliers and Manufacturers good quality grinding mineral mill machine for sale Grinding Mill, Wholesale Various High Quality Grinding Mill Products from Global Grinding Mill Hot sales beneficiation gold ball grinding mill beneficiation machine for mill .
Grinding Mill Limestone, Wholesale Various High Quality Grinding Mill . Energy Saving Raw Limestone Material Grinding Ball Mill Machine for Mining Plant China Good Quality Micronized Barite Attrition Limestone Raymond Grinding Mill.
ultra fine powder grinding mill machine with high capacity and quality. Add to Compare . Best 30B universal grinding mill machine fine powder pulverizer factory price .. Jiangxi Henghong International Mining Machinery Co., Get Price ZENITH grinder mill machine, grinding mill with CE, View grinding .
Grinding Mill, Wholesale Various High Quality Grinding Mill Products from Global Grinding Mill Suppliers and Grinding Mill Factory,Importer,Exporter at. Chat Online Micronized Albendazole, Micronized Albendazole Suppliers and .
2017 newly ore dressing equipment cement powder making 1200x1200 ball mill for mining . grinding machine Ball Mill Production Line for Quartz Sand Powder with alumina ceramics lining . good quality rod ball mill for mineral processing.
Micronized Powder Grinding Machine, Micronized Powder xinhai offers 3,176 micronized powder grinding machine products. About 52% of these are mine mill, 37% are grinding equipment, and 1% are grinding machines.
Good Quality Raymond Mill Machine For Sale, Good Quality Good Quality Raymond Mill Machine For Sale, Wholesale Various High Quality Good Quality Raymond Mill Machine For Sale Products from Global Good Quality Raymond Mill Machine For Sale Suppliers and Good Quality Raymond Mill Machine For Sale Factory,Importer,Exporter at xinhai.
Add to Compare SBM sand belt grinding machine with high quality and capacity. Get Price Grinding Mill Machine. Grinding Mill Machine, Wholesale Various High Quality Grinding Mill . High Capacity Ball Mill Prices / Grinding Machine .. Used Small Gold Rod Ball Grinding Mill Ball Milling Machine Price For Sale .
Jun 18, 20180183;32;Micronized Graphite Powder Mill Machinery, Micronized . This kind of micro powder grinding machine has sucessfully replaced the traditional complicated process of jet mill,ball mill grinding powder,so it reduce a large of production cost,improve the production precision.
Limestone Powder Making Machine xinhai. About 74% of these are mine mill, 4% are grinding equipment, and 1% are filling machines. A wide variety of limestone powder making machine options are available to you, such as ball mill, .
Good Quality and Low Investment Gold Mill Plant Gold Grinding Wet Pan Mill Machine . 2018 Gold supplier zeolite powder grinding mill plant .. iron raymond roller ball mill , quartz grinding mineral mills , ore processing mill gold ore.


text:
import logging
import time

from rogerthat.bizz.job import run_job
from rogerthat.bizz.job.update_friends import schedule_update_a_friend_of_a_service_identity_user
from rogerthat.consts import HIGH_LOAD_CONTROLLER_QUEUE
from rogerthat.dal.service import get_all_service_friend_keys_query
from rogerthat.models import App
from rogerthat.rpc import users
from rogerthat.utils import now
from rogerthat.utils.app import get_app_id_from_app_user
from rogerthat.utils.service import create_service_identity_user
from google.appengine.ext import db, deferred
from solutions.common.bizz.provisioning import populate_identity
from solutions.common.dal import get_solution_settings, get_solution_main_branding
from solutions.common.models.loyalty import SolutionLoyaltySettings
from solutions.common.utils import is_default_service_identity

def job():
    run_job(_get_loyalty_settings, [], _migrate, [])

def _get_loyalty_settings():
    return SolutionLoyaltySettings.all(keys_only=True)

def _migrate(sls_key):
    def trans():
        sln_loyalty_settings = db.get(sls_key)
        sln_loyalty_settings.modification_time = now()
        sln_loyalty_settings.put()
        sln_settings = get_solution_settings(sln_loyalty_settings.service_user)
        if not sln_settings.updates_pending:
            deferred.defer(_set_content_branding, sln_settings, _transactional=True)
    db.run_in_transaction(trans)

def _set_content_branding(sln_settings):
    users.set_user(sln_settings.service_user)
    try:
        sln_main_branding = get_solution_main_branding(sln_settings.service_user)
        populate_identity(sln_settings, sln_main_branding.branding_key)

        identities = [None]
        if sln_settings.identities:
            identities.extend(sln_settings.identities)
        for service_identity in identities:
            if is_default_service_identity(service_identity):
                service_identity_user = create_service_identity_user(sln_settings.service_user)
            else:
                service_identity_user = create_service_identity_user(sln_settings.service_user, service_identity)
            deferred.defer(_update_tablets, service_identity_user, None, _queue=HIGH_LOAD_CONTROLLER_QUEUE)
    finally:
        users.clear_user()

def _update_tablets(service_identity_user, cursor):
    start = time.time()
    qry = get_all_service_friend_keys_query(service_identity_user)
    while True:
        qry.with_cursor(cursor)
        fsic_keys = qry.fetch(100)
        cursor = qry.cursor()
        logging.debug("Fetched %s FriendServiceIdentityConnection keys", len(fsic_keys))
        if not fsic_keys:  # Query reached its end
            return
        for fsic_key in fsic_keys:
            app_user = users.User(fsic_key.parent().name())
            app_id = get_app_id_from_app_user(app_user)
            if app_id != App.APP_ID_OSA_LOYALTY:
                continue

            deferred.defer(schedule_update_a_friend_of_a_service_identity_user,
                           service_identity_user, app_user, force=True)

        if time.time() - start > 500:
            deferred.defer(_update_tablets, service_identity_user, cursor, _queue=HIGH_LOAD_CONTROLLER_QUEUE)
            return

redpajama_set_name: RedPajamaGithub


The Montana Independent Automobile Association is committed to the automotive industry and the independent dealers of the state of Montana.
* Recognize and respond to the industries need for education and information.
* Advocate for fair legislation and rules with representation before our regulatory agencies and the state legislature.
The MTIADA is committed to providing value and opportunity to its members.


text:
A flow direction weighting scheme for facility layout in cellular manufacturing
Davies, Alan, John, Elwyn Graham and Thomas, Andrew 2013. A flow direction weighting scheme for facility layout in cellular manufacturing. International Journal of Productivity and Performance Management 62 (2) , pp. 185-203. 10.1108/17410401311295731
Purpose – The purpose of this paper is to re-examine the solution methodology to the facility grouping problem in group technology originally outlined by Mukhopadhyay et al. The aim of this re-examination is to attempt to resolve some of the problems associated with the original solution methodology and to provide the system designer with an improved technique for the creation of an efficient initial system design solution. Cellular manufacture by its very nature requires work-part transfer both within a machine cell and in some instances between machine cells. By utilising a design methodology which seeks to minimise work-part transfer, these non-value but cost adding tasks are kept to a minimum, thereby providing a faster throughput time and lower operational costs for companies who use cellular manufacturing systems in their production operations. Design/methodology/approach – In approach, the technique advocated parallels the possible alternative solution method suggested by John et al. to resolve the problem of edge ranking ties which exists in the original Mukhopadhyay et al. solution technique. Presented and discussed in this contribution is a revised flow direction weighting scheme (FDWS) which simplifies the solution input data requirements and overcomes a perceived disadvantage in the earlier scheme outlined by John et al. The methodology outlined in the paper is subsequently evaluated for its generic nature, applicability and effectiveness via the use of previously published synthetic production data, and the findings compared to the results determined by several alternative approaches to the problem. Findings – The development and application of the FDWS to cellular manufacturing system design is outlined in the paper and the usefulness of the technique is subsequently examined and compared to the results found for several competing methods. The approach provides for the identification of improved solutions to the test problems examined in both of the earlier contributions by Mukhopadhyay et al., and John et al. In addition, the results show that irrespective of the assessment criteria used, the FDWS technique provides solutions that are comparable to or better than the alternative approaches examined. Originality/value – The proposed FDWS technique further contributes to the existing knowledge base on cellular manufacturing system design. It can provide good initial solution guidance for manufacturing system designers and thereby reduce the time required to achieve an acceptable and cost efficient design for a cellular production system.
Centre for Advanced Manufacturing Systems At Cardiff (CAMSAC)
T Technology > TS Manufactures
The authors wish to acknowledge the contribution made by Dr R.I. Grosvenor of the School of Engineering, Cardiff University in confirming, via a suitable MATLAB programme, that the minimum number of inter-stage moves quoted for the examples used in this article are in fact 20, 20 and seven as recorded in the text.
Cited 3 times in Google Scholar. View in Google Scholar


text:
Funding alert: Startups that raked in moolah in the new year
Navanwita Bora Sachdev - January 15, 2022
The Tech Panda takes a look at recent funding events in the ecosystem.
As 2022 starts, many startups raked in moolah in the new year. According to a latest report conducted jointly by London & Partners and dealroom.co, global tech VC investment into startups hit a record level of US$675 billion in 2021, doubling the previous all-time high of US$340.6 billion in 2020.
The investments in 2021 were led by the US at US$328.8 billion followed by China at US$61.8 billion and India coming in third with a US$44.6 billion funding into the sector. Bengaluru made it to the top five leading VC investment hubs across the world accounting for US$18.6 billion of the global pie. Bengaluru also had a record year, producing 16 new unicorn companies.
Hemin Bharucha, Country Director, India, London and Partners said, "The record venture capital investment figures for the UK and India in 2021 demonstrate that tech and innovation are thriving across both regions. With an increasing number of unicorns and exciting tech startups, cities such as London and Bengaluru are now recognised by VCs as some of the best places to find game changing companies to invest in."
Last year was a record year for VC investment into India and Bengaluru with the Indian tech VC investment having grown three times between 2020 and 2021. India also jumped ranks from 4th in 2020 to 3rd globally in 2021.
Here's a look at how the new year has begun with startups raking in moolah.
Startup: Groyyo
Sector: B2B Manufacturing
Amount: US$4.6 million
Led by: Alpha Wave Incubation
Mumbai based startup Groyyo, a B2B manufacturing and automation company raised US$4.6 million in a seed round of funding led by Alpha Wave Incubation (AWI), which is backed by DisruptAD, ADQ's venture platform, and managed by Falcon Edge Capital.
This round also saw participation by notable marquee angels such as Deepak Jain (Partner & Manufacturing Lead, Bain & Co), Arpan Seth (Partner & Global PE Lead – Bain & Co), OYO Group's Global Chief Strategy Officer Maninder Gulati and Bombay Chamber of Commerce Chairperson Anjali Bansal. Early investors Sparrow Capital and notable venture-debt fund Stride Ventures also participated in this round.
Startup: Courseplay
Sector: Employee growth enablement
Amount: INR 3 crore in Seed
Led by: Inflection Point Ventures
Employee growth enablement platform Courseplay raised INR 3 crore in a Seed round led by Inflection Point Ventures. The funds raised will be used to focus on customer acquisition and bringing new AI-powered capabilities to market. The company will continue to expand operations across India, Southeast Asia, and the Middle East.
Vinay Bansal, Founder and CEO, Inflection Point Ventures says, "This online training programme has been the need of an hour especially with the world going digital due to COVID. Courseplay has some renowned brands which itself speaks volume of the brands end-to-end solution. We look forward to being a part of Courseplay's next phase in their growth journey."
Startup: Zluri
Sector: SaaS Management
Amount: US$10 million
Led by: MassMutual Ventures
SaaS management platform Zluri raised US$10 million in a Series A round of funding led by MassMutual Ventures with participation from existing investors, Endiya Partners and Kalaari Capital. Zluri had previously raised US$2 million from Endiya Partners and Kalaari Capital, in its seed round in January 2021.
The company plans to use the additional capital to continue its growth momentum and further strengthen its product's capabilities. The company plans to double down the teams in core markets in Asia and North America.
Ritish Reddy, Co-Founder, Zluri, said, "We are thrilled to welcome Mass Mutual Ventures as our new partner through this Series A funding. Our rapid growth in the category can be attributed to our product innovation and unparalleled customer support. We will continue our investments to extend our lead in this space and the current round of funding will help us further accelerate our global growth and product innovation."
Anvesh Ramineni, Managing Director at MassMutual Ventures, added, "We are very excited to back Ritish, Sethu, Chaithanya and the Zluri team and look forward to supporting them on their vision of building global leader in this category."
Startup: Glamplus
Sector: SaaS
Amount: US$700k in Pre-Series A
Led by: Blume Ventures and Ramakant Sharma
SaaS enabled marketplace startup Glamplus raised US$700k in a Pre-Series A round from Blume Ventures, Ramakant Sharma (COO- Livspace) and participation from existing investors IPV. The funds raised will be utilised in vertical tech SaaS capabilities along with expansion of B2B marketplace business to scale to 10,000 partners and monthly revenues of INR 5 crore per month by March 2022.
Anirvan Chowdhury, Vice President, Investments, Blume Ventures, shares, "When we met the team around a year back, they had only a concept, and in the past year, they've not only built out a solid product but also in the 6 months since launch, they've been able to drive phenomenal growth while maintaining very strong retention numbers, 4000+ salons with 25 lakhs monthly SaaS revenue and 3Cr. monthly marketplace GMV in 6 months with a +ve CM1 is no mean feat, and we are super excited to be part of this journey."
Mitesh Shah, Co-Founder, Inflection Point Ventures, says, "The fast pace growth trajectory clearly shows the need for this solution in the emerging market and IPV looks forward to extending their support in their journey."
Divyanshu Singh, Co-Founder and CEO, Glamplus says, "We were clearly determined and destined to solve for this highly undeserved SMB market and creating a moat around it by going vertically deep, has also been recognized by our marquee investors. New Funds will be utilised in enhancing tech capabilities, going deep in the marketplace segment and driving growth along with efficiency."
Startup: Algorithmic Biologics Pvt Ltd (ABPL)
Sector: Deep tech
Amount: Undisclosed
Led by: Axilor Lab
Glamplus (ABPL), a deep-tech startup building algorithms for molecular programming received an undisclosed amount of seed funding from Axilor Lab. Algorithmic Biologics plans to use the funds to unlock and scale these applications commercially, as well as extend their IP portfolio to create more building blocks of molecular technologies towards its vision of creating a computing platform to enable us to talk to biological systems in the same way we analyze data.
"Creating and curating ventures requires innate talent to come up with an idea, creativity to demonstrate product-market-fit, and operating skill to scale the effort. Throughout, we need capital. At Axilor Labs, all of these ingredients come together to bring cutting-edge scientific ideas into India's mainstream," said Dr. Tarun Khanna, Harvard Business School professor and co-founder of Axilor. "Our investment in Algorithmic exemplifies this approach. Together with Manoj, we are helping prove the business impact of this breakthrough technology."
Startup: ToolJet
Sector: Low-code
Led by: Nexus Venture Partners
ToolJet, an open source low-code software for building internal tools has raised US$1.5 million in a seed funding round led by Nexus Venture Partners with participation from Ratio ventures, Better capital, Alan Rutledge as well as enterprise founders, operators and investors, including Rohan Murty (founder of Soroco), Sony Joy (head of Enterprise at Truecaller), Vipul Amler (founder of Saeloun), Mohammed Hisamuddin (founder of Entri )and Abhi Kumar of M12 Ventures.
The company intends to use the funding for team expansion to accelerate the development of the core platform of ToolJet.
Sameer Brij Verma, Director, Nexus Venture Partners, commented, "We are thrilled to partner with ToolJet's team on their journey to build a revolutionary open-source low-code / no-code platform with the built-in collaboration which will enable their customers to radically increase their operational clock speed and ability to launch new products."
Startup: Kaleidofin
Sector: Neo-bank
Led by: Michael & Susan Dell Foundation
Kaleidofin raised US$10 million in its series B funding, led by the Michael & Susan Dell Foundation. This takes the total funding raised by Kaleidofin till date to US$18 million. Existing institutional investors, Oiko Credit, Flourish Ventures, Omidyar Network, Blume Ventures and Bharat Fund also participated in the Series B round.
Sucharita Mukherjee and Puneet Gupta, Founders of Kaleidofin said, "We look forward to scaling up the Kaleidocredit business line and drive deep loan product innovation focused on the informal customer and nano business. To this end, we will deepen our investments in developing our technology, risk management and data science capabilities"
To support the next phase of exponential growth, Kaleidofin has appointed Natasha Jethanandani, CTO and Vipul Sekhsaria, Chief Networks Officer, both founding team members, as Co-Founders. Vipul has built out the last mile networks that enable Kaleidofin to reach out to the customer and has been responsible for driving business growth across product lines. Natasha has built out Kaleidofin's technology team and capabilities and brought a strategic focus to the firm's product development roadmap.
Startup: ORAI Robotics
Sector: Conversational AI
Amount: INR 6.5 crore in Pre-Series A
Conversational AI platform ORAI has raised INR 6.5 crore in a Pre-Series A Round led by Inflection Point Ventures. The funds raised will be utilised in expansion in sales and marketing, to capture larger markets, product development and enhancements, and towards R&D.
Vinay Bansal, Founder and CEO, Inflection Point Ventures says, "ORAI has evolved exponentially as a robust AI conversational platform catering to 14 sectors including healthcare, real estate, education, automobile among others. This platform ensures end to end solutions to the customers and clients thus enabling a smoother customer interface, streamline operations, quicker lead generation and also maximise ROI on digital marketing spends. We at IPV look forward to supporting ORAI's vision to grow beyond boundaries and be the leaders in AI conversational space."
Swapnil Jain, Co-Founder and CEO, ORAI, says, "As IPV continues to show trust in our business growth, with the 2nd round led by the Platform, we are all set to expand our operations nationally and internationally. With WhatsApp Commerce becoming the biggest demand in the industry, ORAI has received multiple appreciations from customers for its high tech, high performing platform."
Bowled.io ropes in Harsha Bhogle as strategic investor
Funding alert: Startups that raked in moolah this month
Navanwita Bora Sachdev January 7, 2023
Navanwita Bora Sachdev December 30, 2022


To stay ahead in the fitness industry, Gold's relies on ClubReady.
Gold's Gym knows that fitness is a rapidly changing industry, with new techniques and equipment being developed continually. So why would it settle for a software platform that's never refreshed? With ClubReady, Gold's doesn't have to.
In addition to providing functionality that keeps clubs, gyms, and studios on track every day, ClubReady is always integrating more features and updates that provide fresh options for tomorrow's operations.


There's no doubt about it: smoking is expensive, both because of the product itself (cigarette prices have risen dramatically in the last few years) and because of the associated health costs from smoking. But there are financial costs to quitting, too, especially if you use nicotine replacement therapy, or attend counseling sessions… right?
Well, not necessarily. Quitting doesn't have to cost a lot—or anything in some cases. You really can learn how to stop smoking for free. In fact, the most important factor in how to stop smoking cigarettes—the firm decision to do it—is something that you do on your own, and that doesn't cost anything! Those who succeed in stopping smoking are separated from those who fail by this one critical factor: the unwavering desire to quit.
Some smokers join groups like Nicotine Anonymous or something similar, but you don't have to have a formal, dues-paying arrangement to benefit from the support of other people who want to help you quit. If you're a veteran, check out the free support provided by the Veterans Administration. Many smokers first learned to smoke during their time in the military. One of the best ways to start learning how to stop smoking for free is to simply tell people about your decision. Having people around you who know you're quitting and who are "in your corner" will create positive momentum for your new life that doesn't cost a thing! You may need to find people at work who either have never smoked or who are former smokers. Take breaks with them instead of with the old, smoking crowd. Have a friend or family member you can call when the urge to light up is strong; often, just "talking it through" can help you resist a temporary craving.
For some smokers, keeping a journal is a great way to keep track of how to stop smoking—and it's free! Just start jotting down things you notice about your behavior or cravings: what activities trigger the desire to smoke; what times of day are the hardest; what is working for you; what you've tried that didn't work so well. Looking back at these entries can help you see how your stop-smoking quest has freed you up for other activities.
Improving your diet and exercise can be an important step in how to stop smoking for free. For example, increasing your intake of water and juices can help flush toxins out of your system more quickly and reduce the time spent dealing with withdrawal symptoms. Exercise can increase arterial, lung, and cardiovascular health, returning your body to its "non-smoker" condition more quickly.


text:
Car Hire at Liverpool Lime Street Train Station
Car Hire at Liverpool Lime Street Train Station Book a car from this location
104 St Anne Street, Liverpool, L3 3EB. Tel: 03445446074
Liverpool Lime Street Train Station car hire, tailor-made for you
Fun and vibrant with a tangible creative buzz, Liverpool is one of the UK's top cultural hubs. Since being named the Capital of Culture in 2008, the city has developed its plethora of attractions even more. Just pick up the keys to your Avis hire car at Liverpool Lime Street Train Station and start exploring.
We make Liverpool car rental easy, because we know you can't wait to feel the freedom of the road and get the very most out of your stay. Wherever your travels take you, the keys are waiting for you to unlock the world.
Plan your journey from Liverpool Lime Street Train Station
From Liverpool Lime Street Station in the city centre, make your way to St. George's Hall, the city's finest example of neoclassical architecture. Be sure to visit the Walker Art Gallery to admire one of the finest art collections in Europe. Also, spend some time wandering around the neighbouring World Museum to see a variety of intriguing displays and exhibits.
A trip to Liverpool is never complete without taking in the city's iconic waterfront. Some of Liverpool's best architecture can be appreciated here, including the Three Graces at the Pier Head, comprising of the Royal Liver Building, the Cunard Building and the Port of Liverpool. The famous ferry across the Mersey river can be boarded nearby. Take the boat over to New Brighton for the afternoon, where the river meets the Irish Sea, and indulge in fish and chips at this seaside resort.
Visit the Liverpool One shopping centre for world-class retail therapy and stop in at Albert Dock – a waterfront Victorian warehouse complex that has been converted into bars, restaurants and cultural sites like Tate Liverpool, Merseyside Maritime Museum and the Beatles Story.
Liverpool is best explored by car, giving you the convenience to visit all of the city sights at your leisure.
Beyond Liverpool
For day trips from Liverpool, there are many options to consider. Whether you're after historic towns, natural scenery or artsy sights, it's all within easy reach with a car.
Crosby Beach
Head to Crosby Beach to see Another Place, which is a permanent public art display by Antony Gormley. Consisting of 100 cast iron human figure sculptures, these artworks are atmospherically placed across the sand. This feature is an incredible spectacle no matter when you visit, but it looks particularly stunning at sunset, and is only a 20-minute drive from Liverpool Lime Street Station.
To see an abundance of medieval timber-framed houses, Roman city walls and plenty of other ancient architecture, drive 45 minutes south from Liverpool Lime Street Station to Chester. Visit the city's cathedral and wander along the River Dee to enjoy tranquil scenery brimming with idyllic charm and history. A visit to the Castle Museum is a must. Here you can take a fascinating journey through the region, from ancient times to modern day.
With an Avis rental car you're free to discover all that Liverpool and its surroundings have to offer at your own pace.
Car Hire Liverpool Lime Street Train Station


On this page, you will find various recipes for cuts and injuries.
Make an infusion and wash the wound carefully.
Let it sit for 10 minutes. Use cotton for the wrapping and let it work for a couple of hours.
Make an infusion. Cover and leave for 20 minutes, strain. Wet the compress and place it on the wound.
Let it sit for 15 minutes, strain.
Arnica in 6x strength for chock. One dose immediately and another one a half hour later.
You can use Arnica cream. Don't use this on open wounds.
Use Camphor ointment or home made Camphor oil on sore areas.
Use diluted apple cider vinegar on the wound and wet a piece of cloth to wrap around it.
Extract from Birch leaves, Mayweed, Juniper berries. Rub it on as an embrocation. This stings, so put a piece of cloth between it and the skin.


Best Buy Restaurant Equipment & Supplies is proud to serve the Coachella Valley and Southern California with only the best commercial kitchen equipment and restaurant supply. We've been in the restaurant industry for many years, so we know what it takes for you to be successful in this high competition business.
We have the expertise and experience to provide your restaurant with the highest quality refrigeration equipment and cooking equipment, including walk-in freezers, sandwich tables, reach-in freezers and refrigerators, fryers, warming cabinets, ovens, ranges and more. We will also help stock your restaurant with the cooking utensils and dinnerware you need based on your menu. Our equipment and advice will help your cooks be efficient in the kitchen, and encourage your guests to keep coming back!
Best Buy Restaurant Equipment & Supplies owner, Eduardo Gomez, first tried to open a restaurant in the Valley with his father-in-law in 2007. While searching for reliable equipment vendors, they realized that there was a large hole in the restaurant supply industry. They quickly got connected with as many vendors as possible, forging relationships they still have today. Their business started with a 1700 square-foot showroom, and in seven years has grown into the 12,000 square-foot facility they are happy to share with their customers.
Everyone at Best Buy Restaurant Equipment & Supplies loves to help other people. They know how competitive the restaurant industry is, and that's why they love being able to set all their customers up for success right from the beginning. Their experts work to educate future restaurateurs on all aspects of the business. From how to pass industry regulations and inspections to how to set up your dining room, and everything in between, they can make sure you are set up for efficiency from the start.
See what it's like to have a reliable, trustworthy partner on your side. Call today to get started.


text:
More sustainable forest industries essential to meet global 2050 carbon neutrality goal
Newly installed Chair of ACSFI Ross Hampton.
The newly installed Chair of the United Nations' Food and Agriculture Organization's (UN FAO) Advisory Committee on Sustainable Forest-based Industries (ACSFI), Ross Hampton, has made it clear that increasing sustainable forestry and timber industries is key to achieving the global 'Carbon Neutral by 2050' goal.
Mr Hampton, who is also Chief Executive Officer of the Australian Forest Products Association (AFPA) said, "The world is increasingly turning to renewable resources such as timber and fibre-based packaging to meet both sustainability and climate goals. This trend must be turbo charged if we are to meet the ambition of carbon neutrality by 2050.
"The carbon stored in forests is also stored in the products produced from those forests. Done to certified world best practice in which re-planting or regeneration follows harvest, forestry and forest industries are a continuous production line for the climate friendly, sustainable products which we all need."
"Timber is far less energy-intensive to produce than steel and concrete, making it the 'green' choice for construction. But despite some outstanding breakthroughs in innovative engineered timber products, the shift to medium and high-rise timber buildings has been too slow. If we are to make a meaningful impact on climate, every major city authority with a climate action plan should be demanding developers use more timber."
Forest products also play a huge role providing biodegradable alternatives to single use plastics which are choking our waterways and oceans. This transition also must accelerate. Bioenergy and biomaterials are also an area which has far greater potential to be a force for good."
Secretary of the ACSFI, based in Rome, Sven Walter said, "We are proud to be launching the new ACSFI 2020-2030 Strategic Framework. I am confident that with Ross's leadership the private forest sector will help realise the ACSFI's aim of catalysing innovative forest-related actions through partnerships between FAO, the private sector and other stakeholders."
FAO Forestry Officer, Australian Lyndall Bull said, "I am thrilled to welcome Ross as the new Chair for the ACSFI. The ACSFI has an ambitious work program to help ensure that the global forest sector can maximise its contribution to the sustainable circular bioeconomy. I am looking forward to working with Ross to implement that program as a step towards a carbon neutral world."
#Tags: climate changedecarbonisationforestsustainabilitytimber


As 12.5 million African peoples were enslaved throughout the Americas between 1492 and 1880, 2 to 5.5 million Indigenous peoples were enslaved in New England colonies and the Caribbean as well. They were routinely deported as slaves to Barbados, Bermuda, Jamaica, the Azores, Spain and Tangier in North Africa.
Enslavement of Indigenous peoples in New England, how it intersected with enslavement of Africans in the region, and the connection between New England and Caribbean slaveries are rarely explored dimensions in history. Historians such as Linford D. Fisher, associate professor of history at Brown University, seek to bring them to light.
Fisher's recent study, "Why shall wee have peace to bee made slaves," examines en mass enslavement of New England's Indigenous peoples during and after King Philip's War (1675-1678).
The study also delves into the fate of those who surrendered, generational impacts, and the complex alliances and compromises made during that period.
Named after Wampanoag chief Metacomet–who adopted the English name Philip–King Philip's War took place in the colonies of Massachusetts, Connecticut, Rhode Island, and Maine. It resulted in devastation for the Wampanoags and their Narragansett allies.
Although systemic enslavement of Indigenous peoples is documented as early 1636 during The Pequot War (1634-1638), King Philip's War was the point at which colonial settlers intensified their centuries-long campaign to "disappear" millions of East Coast Indigenous peoples through lifelong and even heritable slavery, forced removals, renaming, racial reclassifications, falsification of records, detribalizations, and institutionalizations.
An unintended outcome of colonial settler thirst for land and forced, unpaid labor was the increased collaboration and kinship between enslaved Indigenous and African peoples, which became one of the biggest fears in the colonial world. Settlers utilized laws and lies to tear those relationships apart for centuries.
The previously lost Barbados Act outlined an import ban on enslaved New England Native Americans after the May 1675 attempted African revolt on the island.
Learn more through Brown University's "Indian Slavery: An Unspoken History" discussion and check out recommended reading below.
This article originally corresponded with an event at the Schomburg Center for Research in Black Culture featuring Linford D. Fisher.


I have tried this on your site using Chrome and Safari, I am unable to duplicate it.
Please verify and send us a ticket for a detailed information.
Let me go ahead and have this checked by our senior developer.


text:
The APCA Story
APCA Regions & Teams
APCA Gives Back
Artist/Agency Membership
Artists/Agencies
Artist/Agency Information
Artist/Agency Advertising
Submit Artist Profile
Spring 2021 Events
School Virtual Pass Info
RENEW Virtual Pass Registration 2021
NEW Virtual Pass Registration 2021
Conference Experience
FAQs: Virtual Conference
Advisor Articles
Advisor Document Library
Advisor Video Library
CLT Magazines
Cooperative Buying
Online Software Toolbox
Pivot Webinars
Music Billy aka Macky 2 Music Bio I was born with a medical condition Sickle Cell Anemia. I had a stroke at the age of 14 that made me have to learn how to walk again. I fought hard through all that and signed my first Record Contract at the age of 18. I have…
Tropicante
BIO/DESCRIPTION: "Tales from Earth Incorporated is a live concert experience like no other about global human rights and environmental justice. TFEI engages its audience through enlightening discussion and soulful performances of songs calling to the urgency of climate change, gun violence, the unjustly incarcerated, indigenous rights, and more, through real stories of people around the…
BIO/DESCRIPTION: You've seen him on The Voice. Now bring Ryan Quinn to your campus virutally. Ryan is a vocalist/multi-instrumentalist born and raised in Central New York. Growing up in a musical family, he was exposed to a wide variety of music at a young age, including: jazz, soul, funk, rock, fusion and acoustic/singer-songwriters. Before playing…
BIO/DESCRIPTION: Taylor Reed, a self-taught solo artist from Tampa, FL, channels her natural creativity and spontaneity with violin, guitar and vocals through a looping station, building an elegantly layered and engrossingly soulful sound. Weaving violin melodies through groove-infused renditions of pop and rock hits, her music elevates any space. Her new original work connects on…
BIO/DESCRIPTION: Ryan LaPerle is no stranger to the stage opening for country pop artists like Chris Lane or attracting large crowds of thousands at Boston's Famous Faneuil Market Place. This New Hampshire native has a voice that has been compared to singers like James Bay & Ed Sheeran. Ryan's passion has always been to sing.…
Sub Radio Music Bio Sub-Radio makes indie pop that grooves, stabs, winks, punches, inspires. Founded by six childhood friends, they built a following in their hometown of Washington, D.C. on the strength of ecstatic live shows and a stream of releases. Following a national tour in 2019, their 2020 EP, produced by Andrew Maury…
BIO/DESCRIPTION: Stacey Kay was a finalist on America's Got Talent season 10. Her covers of several hit songs have received recognition from the original artists including BeBe Rexha, RuPaul, Meghan Trainor, Fergie, Iggy Azalea, Jennifer Hudson, and Chris Brown. Her unique and powerful singing voice paired with her machine-gun rapping has garnered her online videos…
BIO/DESCRIPTION: Shenna's an Indie-Pop/ R&B artist from Virginia currently living in NYC who's music has been featured on MTV, Disney, VH1, Netflix and more. With Millions of social media and YouTube impressions, The Washington Post, Nylon, and Billboard highlighted her latest EP "Blue Memories". After the release of "Blue Memories" Shenna was able to tour…
BIO/DESCRIPTION: SAYONNE (Sigh-Awn) is a global artist, known for her many works as an R&B/Pop singer-songwriter, radio cohost, actress and entertainer. She worked her way through the music and recording industries, landing a successful 2019 hit, "2 Worlds (Remember)." Now she has a hot new single, "Hot Sauce," as well as an upcoming album that…
BIO/DESCRIPTION: Born and raised in Los Angeles, indie artist Ponta writes songs of self-love and relatable experiences of the human condition. After having stepped away from the limiting expectations of women in her Persian culture, Pontea has grown a loyal fan base and has evolved into an empowering figure for women in her own right.…
BIO/DESCRIPTION: Folk-Americana duo Of Sea and Stone began in January 2014 when Luke Dierker and Morgan Manson matched on Tinder. Immediately exhibiting a rare vocal chemistry, the two began writing and performing tirelessly across their home state, Missouri. 5 years, one marriage, and many shows later, the pair has released their first full-length studio album…
BIO/DESCRIPTION: Nick Black is quickly becoming one of the most recognizable names in the Pop/Soul music scene. He grew up between two worlds: his family's deep ties to church and Memphis where Soul, RnB, Rock N' Roll, and Blues legends made names for themselves, Black's sound is an organically grown phenomenon. Since being featured on…
BIO/DESCRIPTION: Michaela Paige participated in NBC's Emmy Award winning hit reality TV show "The Voice", where she earned a spot in the Top 12 on Team Blake. After The Voice, Michaela spent four years as creator and host of three radio shows with Talk4Media, a company partnered with iHeart. In 2016 Michaela and her team launched…
BIO/DESCRIPTION: Kent Jenkins (Snubby J) is an entertainer & musician known for his RimbaTubes, a homemade PVC Pipe Instrument. He creates highly energetic musical performances that have garnered millions of views online and on television across the globe (The Ellen Show, TEDx.com, MTV's Amazingness, Das Supertalent). He most recently toured across Asia (Singapore, India &…
BIO/DESCRIPTION: More than just a 90's cover band, Nine Deeez Nite is THE tribute to the 90's! Whether it's opening for Red Hot Chili Peppers, rocking out at NFL and NHL pregame shows, or touring colleges around the country, Nine Deeez Nite pride themselves on delivering an exciting flashback of 90's nostalgia. Re-live all the…
NELLY'S ECHO BIO Nelly's Echo is neither a band nor a solo musician, but a concept of the musical experience associated with its creator and led by guitarist and vocalist Nelson Emokpae. Nelly's Echo also features drummer Thomas Morris, bassist Jordan Parks, and keyboardist Kameron Ralls. The adult alternative pop/rock band, inspired by soul music…
BIO/DESCRIPTION: Passion. Drive. Determination. That's what Leanne Weiss and Derek Allan bring to country music. You won't find them sitting still, nor can you try to stop them. Long before their formation as country duo October Rose, these two were separately chasing similar dreams with the same level of ambition, but in different states. Since…
BIO/DESCRIPTION: When Presley & Taylor sing, and fans hear their sibling harmonies, they experience beautiful music and experience the true bond of sisters and best friends. The duo's dynamic vocal delivery and song selection reflect the good things in life centered on real life experiences, faith, hope and love. Original material, coupled with crowd favorites…
BIO/DESCRIPTION: This talented musician has earned the admiration and affection of critics and fans alike. His universal appeal has allowed him to travel both domestically and internationally on Jazz, Blues, and R&B Tours, opening for artists such as R.Kelly, Anthony Hamilton, Carl Thomas, K.Michelle, Tyrese.
The mission of The Association for the Promotion of Campus Activities(APCA) is to promote campus engagement through quality educational experiences, affordable entertainment and community service initiatives.
Privacy Policy | Membership Policies
info@apca.com
© 2020 Association for the Promotion of Campus Activities | All Rights Reserved
Items still in Cart
Please checkout or empty your cart before proceeding
Do you really want delete this credit card? This process cannot be undone.
If you already have a account please login otherwise please register.
Your Items still in Cart. Do you want order cancel.
Order Cancel Close
Invalid Credit Card
You need to have a valid credit card before you can submit a showcase application.
Cancel Or Add Card


Dining outdoor on the terrace or in the garden, under the shade of a tree or by the swimming pool is a wonderful way to spend your quality time with friends and family in a relaxed setting.
All you need are some tasteful touches to give your garden dining a cozy and original feel. Create something unique that reflects your personality and taste and find some tips on our "Lunch in the Garden" photo shoot.
Be inspired by Marinoni pewter creations!
Small pewter and glass pitcher.
Big pewter and glass pitcher.
Pewter and glass water jug.
"Bollicine" pewter and glass dinner plate.
"Bollicine" pewter and glass dessert plate.
Pewter and glass water glass - big.
Pewter and glass water glass - small.
Pewter butter dish with dome.
Pewter and stainless steel dessert fork.
Bella Bianca 6 pcs flatware set.


text:
Q: How to get URL as a string of an image using the image picker to POST to an API for processing? I'm trying to make the user choose a picture from their photo album to upload to an API and get some data back. The problem is that I don't know if this is correct to upload an image from the iPhone.
I've been trying to upload the image's URL to the API. I keep trying to get the string from the URL, but when I try to retrieve it, it gives me an error that the UTF can't be determined. I then use utf16 but it gives me a string with a bunch of weird text characters that is hundreds of characters long.
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {

    let pickedImageURL = info[UIImagePickerControllerImageURL] as! URL
    let pickedImageStr = try! String(contentsOf: pickedImageURL, encoding: String.Encoding.utf16)
    ImageAPI.call(with: pickedImageStr)

    dismiss(animated: true)
}

The weird thing is that Xcode terminal tells me the exact path as a string when I don't use the UTF parameter at all. It gives me the following error:
Error Domain=NSCocoaErrorDomain Code=264 "The file "E4DF0E72-1E7E-45FA-A5A2-A03850EC182D.jpeg" couldn't be opened because the text encoding of its contents can't be determined." UserInfo={NSFilePath=/private/var/mobile/Containers/Data/Application/351FF152-79C7-447E-9964-2C150368946D/tmp/E4DF0E72-1E7E-45FA-A5A2-A03850EC182D.jpeg}

So how come when I try to get the URL as a string, it doesn't work and gives me a string hundreds of characters long with a bunch of weird symbols??
If I were to just copy and paste the file location given in the terminal, I get an error that says the file doesn't exist.

A: Use this
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {

let pickedImageURL = info[UIImagePickerControllerImageURL] as! URL
let pickedImageStr = pickedImageURL.description
ImageAPI.call(with: pickedImageStr)

dismiss(animated: true)
}

String(contentsOf: URL) method is show file in URL address by string, not create String by url

redpajama_set_name: RedPajamaStackExchange


text:
<?php

namespace actsmart\actsmart\Sensors\Slack\Events;

use actsmart\actsmart\Sensors\UtteranceEvent;
use actsmart\actsmart\Utils\Literals;
use Ds\Map;

class SlackDialogSubmissionEvent extends SlackEvent implements UtteranceEvent
{
    const EVENT_NAME = 'event.slack.dialog_submission';

    private $workspace_id;

    private $channel_id;

    private $callback_id;

    private $response_url;

    private $user_id;

    private $submission;

    public function __construct($subject, $arguments = [])
    {
        parent::__construct($subject, $arguments);
        $this->workspace_id = $subject->team->id ?? null;
        $this->callback_id = $subject->callback_id ?? null;
        $this->channel_id = $subject->channel->id ?? null;
        $this->response_url = $subject->response_url ?? null;
        $this->user_id = $subject->user->id ?? null;
        $this->submission = $subject->submission ?? null;
    }

    public function getKey()
    {
        return SELF::EVENT_NAME;
    }

    public function getUtterance() : Map
    {
        /* @var \Ds\Map */
        $utterance = new Map();
        $utterance->put(Literals::TYPE, Literals::SLACK_DIALOG_SUBMISSION);
        $utterance->put(Literals::TEXT, '');
        $utterance->put(Literals::WORKSPACE_ID, $this->getWorkspaceId());
        $utterance->put(Literals::USER_ID, $this->getUserId());
        $utterance->put(Literals::CHANNEL_ID, $this->getChannelId());
        $utterance->put(Literals::TIMESTAMP, $this->getTimestamp());
        $utterance->put(Literals::CALLBACK_ID, $this->getCallbackId());
        $utterance->put(Literals::ITEM_ID, $this->getItemId());
        $utterance->put(Literals::ACTION, $this->getAction());
        $utterance->put(Literals::SUBMISSION, $this->getSubmission());
        $utterance->put(Literals::RESPONSE_URL, $this->getResponseUrl());
        return $utterance;
    }

    /**
     * @return string | null
     */
    public function getWorkspaceId()
    {
        return $this->workspace_id;
    }

    /**
     * @return string | null
     */
    public function getChannelId()
    {
        return $this->channel_id;
    }

    /**
     * @return string | null
     */
    public function getUserId()
    {
        return $this->user_id;
    }

    /**
     * @return mixed
     */
    public function getSubmission()
    {
        return $this->submission;
    }

    /**
     * @return string | null
     */
    public function getCallbackId()
    {
        return $this->callback_id;
    }

    /**
     * @return mixed
     */
    public function getResponseUrl()
    {
        list($action, $item_id, $timestamp, $response_url) = array_pad(explode(';', $this->callback_id), 4, null);

        return (substr($response_url, 0, 4) == 'url:') ? substr($response_url, 4) : $this->response_url;
    }

    /**
     * @return mixed
     */
    public function getAction()
    {
        list($action, $item_id, $timestamp, $response_url) = array_pad(explode(';', $this->callback_id), 4, null);

        return (substr($action, 0, 2) == 'a:') ? substr($action, 2) : '';
    }

    /**
     * @return mixed
     */
    public function getItemId()
    {
        list($action, $item_id, $timestamp, $response_url) = array_pad(explode(';', $this->callback_id), 4, null);

        return (substr($item_id, 0, 3) == 'id:') ? substr($item_id, 3) : '';
    }

    /**
     * Returns the time the command was called.
     *
     * @return int
     */
    public function getTimestamp()
    {
        list($action, $item_id, $timestamp, $response_url) = array_pad(explode(';', $this->callback_id), 4, null);

        return (substr($timestamp, 0, 3) == 'ts:') ? substr($timestamp, 3) : time();
    }
}


You can purchase information on GLOBES PATENT INTERNATIONAL LTD in 4 formats. Basic, detailed, and full reports are ready within 12 - 36 hours. Legal & bankruptcy searches take 3 - 4 business days.
GLOBES PATENT INTERNATIONAL LTD is a legally registered business in Israel (corporate ID: 514643147). Basic, detailed, and full reports are ready within 12 - 36 hours. Legal & bankruptcy searches on GLOBES PATENT INTERNATIONAL LTD (514643147) take 3 - 4 business days. You can purchase information on GLOBES PATENT INTERNATIONAL LTD (located in Herzliya, Israel in the below formats.


text:
Bizarre, Criminal law, Politics, Society	 November 3, 2009 November 3, 2009
Lawyer Charged in Bizarre Attack on State Legislator In Indiana
Prosecutors in Carmel, Indiana have a perfectly bizarre crime involving a state representative, a lawyer, money-laundering for the Russian mob, a porn store, and a decades old grudge. In the case, Indiana State Representative Ed DeLaney was injured by longtime foe, lawyer Augustus Mendenhall, 38, in what the latter says was an elaborate trick gone bad.
Mendenhall admits that he lured DeLaney under a false claim that he was a representative for a Russian company that was a front for the Russian mafia. "I expressed to him that they wanted to launder or implied money through real estate here in Indiana," Mendenhall said. Mendenhall donned a wig, gloves, coat, and appeared under the false name of Victor White. He also brought a gun. When he met DeLaney at a secluded spot, he asked "If he was right with God" and pointed the gun at him.
However, he refused to say whether he pulled the trigger.
Police say that he did pull the trigger. What is clear is that in the struggle the former Air Force veteran caused serious injuries to DeLaney, including several broken ribs and will have to have surgery for broken bones around his eye socket.
The grudge going back 26 years involves Mendenhall's father. In the 1980s, Burke Mendenhall owned property and wanted to lease part of its property to an adult bookstore. The local prosecutor, Steven Goldsmith filed suit against Mendenhall under Indiana's Racketeering and Corrupt Influence laws and seized the property.
Ed DeLaney was the attorney who worked on the case for the mall's owners, DeBartolo Group. Notably, DeLaney's wife, Ann, headed up the sex crimes unit as a deputy prosecutor in Goldsmith's office at the time.
The litigation went on for years. The result was financial ruin for the family and Mendenhall blamed DeLaney. Burke Mendenhall filed a lawsuit against the city
Mendenhall blamed DeLaney for it. In 1997, Burke Mendenhall filed suit against the city and that case went to the state Supreme Court, but lost. Mendenhall says that he joined the military to simply support his family.
Mendenhall is now facing multiple counts, including attempted murder, and a $3 million bond, here.
Augustus ("Gus") Mendenhall, is a 2008 graduate of the IU School of Law-Indianapolis.
For the full story, click here and here
Kudos: Gary Welsh
Giant Breathalyzer Found Drunk in Ohio
San Jose Police Taser Man and Break His Arm After He Tries to Clean His Hands
5 thoughts on "Lawyer Charged in Bizarre Attack on State Legislator In Indiana"
Randolph Bourne says:
Mendenhall's story isn't believable at all. I know Ed, so maybe I'm biased here, but the idea that he would agree to a meeting with someone claiming to be a front for the mob strains credulity. But even leaving *that* out, consider this: Why would Mendenhall want to use that to lure him? Wouldn't Ed be less likely to show up if it was under the pretense of organizing a criminal conspiracy? Why wouldn't Mendenhall just say he represented Russian businessmen looking to buy real estate in Indianapolis and leave the whole "money laundering" part out of the equation? This sounds like something he made up after the fact to try to cause Ed political embarrassment.
Buddha Is Laughing says:
Two words:
Natural Selection.
Dredd says:
Politics as unusual …
Vapidnator says:
I do not say as that I could blame him. Both were stupid and one is charged with making the laws the other one representing their client the best way they know how.
Flipkid says:
I'm curious as to why Rep. DeLaney would show up for a meeting with who he believed to be a Russian mobster looking for a way to launder money. (That is, if ANY part of Mendenhall's story is remotely believable.) That in itself would seem to be incredibly damaging to his career and reputation regardless of how the criminal charges against Mendenhall turn out.


text:
"use strict";
/*
  client.js

  Implements the vsphere Client() class

*/

var EventEmitter = require('events').EventEmitter,
  util = require('util'),
  nvs = require('node-vsphere-soap'),
  types = require('./types'),
  Joi = require('joi'),
  _ = require('lodash');

function receiveAll(initial, self, emitter) {
  //return new Promise((resolve, reject) => {
  function executeContinueReceive(previous) {
    var args = {
      _this: {"attributes":{"type":"PropertyCollector"},"$value":"propertyCollector"},
      token: previous.returnval.token
    }
    self.vc.runCommand('ContinueRetrievePropertiesEx', args).once('result', function(current){
      var previousObjects = previous.returnval.objects
      var currentObjects = current.returnval.objects
      var allObjects = previousObjects.concat(currentObjects)

      current.returnval.objects = allObjects
      if(current.returnval.token == undefined) {
        emitter.emit('result', current)
        //resolve(current);
        return
      }
      return executeContinueReceive(current)

    }).once('error', function(e) { emitter.emit('error', e) });
  }
  executeContinueReceive(initial)
  //})
}

// Client class
function Client( hostname, username, password, sslVerify) {

  var self = this;

  EventEmitter.call(this);

  this.serviceContent = undefined;

  this._hostname = hostname;
  this._username = username;
  this._password = password;
  this._sslVerify = sslVerify;

  // this calls the node-vsphere-soap module to create a session with the vCenter server
  // this also saves a copy of the serviceContent object for later use
  var vc = new nvs.Client( hostname, username, password, sslVerify);
  vc.once('ready', function() {
    self.serviceContent = vc.serviceContent;
    self.emit('ready');
  });
  vc.once('error', function(err) {
    self.emit('error', err);
  });

  this.vc = vc;

  return this;

}

util.inherits(Client, EventEmitter);

// run arbitrary vSphere API command
Client.prototype.runCommand = function( command, args) {

  return this.vc.runCommand( command, args );

};

// get ManagedObjectReferences of objects in a container that are a certain type
Client.prototype.getMORefsInContainerByType = function( MORefFolder, type ) {

  return this.getMORefsInContainerByTypePropertyArray( MORefFolder, type, undefined );

};

// get ManagedObjectReferences of objects in a container that are a certain type
// and have a certain name or names
Client.prototype.getMORefsInContainerByTypeName = function( MORefFolder, type, nameArray ) {

  var self = this;
  var emitter = new EventEmitter;

  // convert nameArray to an array if only one name given
  if( typeof nameArray === 'string' && ! _.isArray(nameArray)) {
    nameArray = [ nameArray ];
  }

  this.getMORefsInContainerByTypePropertyArray( MORefFolder, type, 'name')
  .once('result', function(result) {

    var allObjsArray = result.returnval.objects;
    var objArray = [];
    var processed = 0;

    _.forEach( allObjsArray, function( object ) {
      if( _.includes( nameArray, object.propSet.val['$value']) ) {
        objArray.push(object.obj);
      }
      processed++;
      if( processed == allObjsArray.length ) {
        if(objArray.length == 1) {
          emitter.emit('result', objArray[0]);
        } else {
          emitter.emit('result', objArray);
        }
      }
    });

  })
  .once('error', function(err) {
    emitter.emit('error', err);
  });

  return emitter;

};

// get ManagedObjectReferences of objects in a container that are a certain type
// and only return certain properties
Client.prototype.getMORefsInContainerByTypePropertyArray = function( MORefFolder, type, propertyArray ) {

  var viewManager = this.vc.serviceContent.viewManager;
  var propertyCollector = this.vc.serviceContent.propertyCollector;

  var containerView;

  var emitter = new EventEmitter;
  var self = this;

  this.vc.runCommand('CreateContainerView', { _this: viewManager,
                                        container: MORefFolder,
                                        type: type,
                                        recursive: true})
    .once('result', function(result) {

      containerView = result.returnval;

      var propertySpec = {};

      if( propertyArray && typeof propertyArray === 'object' && propertyArray.length > 0) {
        propertySpec = {
          attributes: {'xsi:type': 'PropertySpec'},
          type: type,
          all: false,
          pathSet: propertyArray
        };
      } else if( propertyArray && typeof propertyArray === 'string') {
        propertySpec = {
          attributes: {'xsi:type': 'PropertySpec'},
          type: type,
          all: false,
          pathSet: [ propertyArray ]
        };
      } else {
        propertySpec = {
          attributes: {'xsi:type': 'PropertySpec'},
          type: type,
          all: true
        };
      }
      Joi.validate(propertySpec, types.schemaPropertySpec, function(err, value) {
        if(err) {
          emitter.emit('error', err);
          return;
        }
      });

      var traversalSpec = {
        attributes: {'xsi:type': 'TraversalSpec'},
        type: 'ContainerView',
        path: 'view',
        skip: false
      };
      Joi.validate(traversalSpec, types.schemaTraversalSpec, function(err, value) {
        if(err) {
          emitter.emit('error', err);
          return;
        }
      });

      var objectSpec = {
        attributes: {'xsi:type': 'ObjectSpec'},
        obj: containerView,
        skip: true,
        selectSet: [ traversalSpec ]
      };
      Joi.validate(objectSpec, types.schemaObjectSpec, function(err, value) {
        if(err) {
          emitter.emit('error', err);
          return;
        }
      });

      var propertyFilterSpec = {
        attributes: {'xsi:type': 'PropertyFilterSpec'},
        propSet: [ propertySpec ],
        objectSet: [ objectSpec ]
      };
      Joi.validate(propertyFilterSpec, types.schemaPropertyFilterSpec, function(err, value) {
        if(err) {
          emitter.emit('error', err);
          return;
        }
      });

      self.vc.runCommand('RetrievePropertiesEx', { _this: propertyCollector, specSet: [ propertyFilterSpec ], options: {} })
        .once('result', function(result){
          if(result.returnval && result.returnval.token){
            receiveAll(result, self, emitter)
          } else {
            emitter.emit('result', result);
          }
        })
        .once('error', function(err){
          // console.error('\nlast request : ' + self.vc.client.lastRequest + '\n');
          emitter.emit('error', err);
        });
    })
    .once('error', function(err){
      // console.error(err);
      emitter.emit('error', err);
    });

  return emitter;
};

// retrieve the properties of a specific object by its ManagedObjectReference
Client.prototype.getMORefProperties = function( MORef, propertyArray ) {

  var viewManager = this.vc.serviceContent.viewManager;
  var propertyCollector = this.vc.serviceContent.propertyCollector;
  var rootFolder = this.vc.serviceContent.rootFolder;

  var containerView;

  var emitter = new EventEmitter;
  var self = this;

  this.vc.runCommand('CreateContainerView', { _this: viewManager,
                                        container: rootFolder,
                                        type: MORef.attributes.type,
                                        recursive: true})
    .once('result', function(result) {

      containerView = result.returnval;

      var propertySpec = {};

      if( propertyArray && typeof propertyArray === 'object' && propertyArray.length > 0) {
        propertySpec = {
          attributes: {'xsi:type': 'PropertySpec'},
          type: MORef.attributes.type,
          all: false,
          pathSet: propertyArray
        };
      } else if( propertyArray && typeof propertyArray === 'string') {
        propertySpec = {
          attributes: {'xsi:type': 'PropertySpec'},
          type: MORef.attributes.type,
          all: false,
          pathSet: [ propertyArray ]
        };
      } else {
        propertySpec = {
          attributes: {'xsi:type': 'PropertySpec'},
          type: MORef.attributes.type,
          all: true
        };
      }
      Joi.validate(propertySpec, types.schemaPropertySpec, function(err, value) {
        if(err) {
          emitter.emit('error', err);
          return;
        }
      });

      var traversalSpec = {
        attributes: {'xsi:type': 'TraversalSpec'},
        type: 'ContainerView',
        path: 'view',
        skip: false
      };
      Joi.validate(traversalSpec, types.schemaTraversalSpec, function(err, value) {
        if(err) {
          emitter.emit('error', err);
          return;
        }
      });

      var objectSpec = {
        attributes: {'xsi:type': 'ObjectSpec'},
        obj: MORef
      };
      Joi.validate(objectSpec, types.schemaObjectSpec, function(err, value) {
        if(err) {
          emitter.emit('error', err);
          return;
        }
      });

      var propertyFilterSpec = {
        attributes: {'xsi:type': 'PropertyFilterSpec'},
        propSet: [ propertySpec ],
        objectSet: [ objectSpec ]
      };
      Joi.validate(propertyFilterSpec, types.schemaPropertyFilterSpec, function(err, value) {
        if(err) {
          emitter.emit('error', err);
          return;
        }
      });

      self.vc.runCommand('RetrievePropertiesEx', { _this: propertyCollector, specSet: [ propertyFilterSpec ], options: {} })
        .once('result', function(result){
          emitter.emit('result', result);
        })
        .once('error', function(err){
          // console.error('\nlast request : ' + self.vc.client.lastRequest + '\n');
          emitter.emit('error', err);
        });
    })
    .once('error', function(err){
      // console.error(err);
      emitter.emit('error', err);
    });

  return emitter;
};

// gets the power state of all VMs in a certain container
// this function returns information in the following format
/* [{ obj: { attributes: { type: 'VirtualMachine' }, '$value': '4' }, // this is a ManagedObjectReference
    name: 'testvm-win',
    powerState: 'poweredOff' }, ...]
*/
Client.prototype.getVMinContainerPowerState = function( MORefFolder ) {

  var self = this;
  var emitter = new EventEmitter;

  this.getMORefsInContainerByTypePropertyArray( MORefFolder, 'VirtualMachine', 'summary')
    .once('result', function(result) {

      // if no vms, return empty set
      if( typeof result == 'undefined' || _.isEmpty(result)) {
        emitter.emit('result', []);
        return;
      }

      var data = result.returnval.objects;
      var resultArray = [];

      if( ! _.isArray(data) ) {
        data = [ data ];
      }

      _.forEach(data, function(vm) {
        resultArray.push({
          obj: vm.obj,
          name: vm.propSet.val.config.name,
          powerState: vm.propSet.val.runtime.powerState
        });
        if( resultArray.length === data.length ) {
          emitter.emit('result',resultArray);
        }
      });
    })
    .once('error', function(err){
      // console.error(err);
      emitter.emit('error', err);
    });

  return emitter;

};

// this monitors an object via its ManagedObjectReference, only watching the given filtered Properties (filterProps).
// when the properties from the filter named by endWaitProps equal one of the expectedVals, the result event is emitted.
// This function was ported from vSphere WS Java SDK
Client.prototype.waitForValues = function( MORef, filterProps, endWaitProps, expectedVals) {

  var self = this;
  var serviceContent = this.serviceContent;

  var emitter = new EventEmitter;

  if( ! _.isArray(filterProps) ) {
    filterProps = [ filterProps ];
  }
  if( ! _.isArray(endWaitProps) ) {
    endWaitProps = [ endWaitProps ];
  }
  if( ! _.isArray(expectedVals) ) {
    expectedVals = [ expectedVals ];
  }

  // utilize a separate client session to prevent filter clobbering from simultaneous calls to this function
  var singletonClient = new nvs.Client( self._hostname, self._username, self._password, self._sslVerify);
  singletonClient.once('ready', function() {

    // create propertyFilterSpec for upcoming createFilter command
    var objectSpec = {
      attributes: {'xsi:type': 'ObjectSpec'},
      obj: MORef,
      skip: false,
    };
    Joi.validate(objectSpec, types.schemaObjectSpec, function(err, value) {
      if(err) {
        emitter.emit('error', err);
        return;
      }
    });
    var propertySpec = {
      attributes: {'xsi:type': 'PropertySpec'},
      type: MORef.attributes.type,
      pathSet: filterProps
    };
    Joi.validate(propertySpec, types.schemaPropertySpec, function(err, value) {
      if(err) {
        emitter.emit('error', err);
        return;
      }
    });

    var propertyFilterSpec = {
      attributes: {'xsi:type': 'PropertyFilterSpec'},
      propSet: [ propertySpec ],
      objectSet: [ objectSpec ]
    };
    Joi.validate(propertyFilterSpec, types.schemaPropertyFilterSpec, function(err, value) {
      if(err) {
        emitter.emit('error', err);
        return;
      }
    });

    var version = "";
    var reached = false;

    singletonClient.runCommand('CreateFilter', { _this: singletonClient.serviceContent.propertyCollector, spec: propertyFilterSpec, partialUpdates: true })
    .once('result', function(result) {

      var filterSpecRef = result.returnval;
      var version = "";

      var found = false;

      var toCompare = {};
      var finalReturnVals = {};

      ( function waitForUpdates() {

        singletonClient.runCommand('WaitForUpdatesEx', { _this: singletonClient.serviceContent.propertyCollector, version: version, options: {} })
        .once('result', function(result) {
          if( _.isEmpty(result.returnval) || _.isEmpty(result.returnval.filterSet) ) {
            waitForUpdates();
            return;
          }
          version = result.returnval.version;

          var filterSetArray = result.returnval.filterSet;
          if( ! _.isArray(filterSetArray) ) {
            filterSetArray = [ result.returnval.filterSet ];
          }

          _.forEach( filterSetArray, function( filterSet ) {
            var objSetArray = filterSet.objectSet;
            if( ! _.isArray(objSetArray) ) {
              objSetArray = [ objSetArray ];
            }
            _.forEach( objSetArray, function( objSet ) {
              if( objSet.kind == 'modify' ||
                objSet.kind == 'enter' ||
                objSet.kind == 'leave' ) {
                var changeSetArray = objSet.changeSet;
                if( ! _.isArray(changeSetArray) ) {
                  changeSetArray = [ changeSetArray ];
                }

                _.forEach( changeSetArray, function( changeSet ) {

                  _.forEach( endWaitProps, function(prop) {
                    if( changeSet['name'].indexOf(prop) >= 0) {
                      if(changeSet['op'] == 'remove') {
                        toCompare[prop] = "";
                      } else {
                        toCompare[prop] = changeSet.val;
                      }
                    }
                  });

                  _.forEach( filterProps, function(prop) {
                    if( changeSet['name'].indexOf(prop) >= 0) {
                      if(changeSet['op'] == 'remove') {
                        finalReturnVals[prop] = "";
                      } else {
                        finalReturnVals[prop] = changeSet.val;
                      }
                    }
                  });
                });
              } // end if
            });

            var compared = 0;
            while(compared < _.keysIn( toCompare ).length ) {

              for( var key in toCompare) {
                if( expectedVals.indexOf(toCompare[key]['$value']) > -1 ) {
                  found = true;
                }
                compared++;
              }
            }

            if(found) {
              // emit result
              emitter.emit('result', finalReturnVals);
              singletonClient.close();
            } else {
              if( compared == _.keysIn( toCompare ).length && !found) {
                // no relevant updates yet -- check again
                waitForUpdates();
                return;
              }
            }
          });
        })
        .once('error', function(err) {
          // issue with WaitForUpdatesEx
          // console.error(err);
          emitter.emit('error',err);
          singletonClient.close();

        })
      }()); // end waitForUpdates()
    })
    .once('error', function(err) {
      // issue with CreateFilter
      // console.error(err);
      emitter.emit('error',err);
      singletonClient.close();
    });
  })
  .once('error', function(err) {
    // issue creating second client
    // console.error(err);
    emitter.emit('error',err);
    singletonClient.close();
  });

  return emitter;

};

// run a power operation on a single VM or array of VMs by name
Client.prototype.powerOpVMByName = function( nameArray, powerOp ) {

  var self = this;
  var emitter = new EventEmitter;

  // _.isUndefined()
  if( !_.isArray(nameArray) ) {
    nameArray = [ nameArray ];
  }

  self.getMORefsInContainerByTypePropertyArray( self.serviceContent.rootFolder, 'VirtualMachine', 'name')
  .once('error', function(err) {
    emitter.emit('error', err);
  })
  .once('result', function(result) {
    var allVMsArray = result.returnval.objects;
    var vmObjArray = [];
    var processed = 0;
    var cmdRun = false;

    _.forEach( allVMsArray, function( vmObj ) {
      if( _.includes( nameArray, vmObj.propSet.val['$value']) ) {
        vmObjArray.push(vmObj.obj);
      }
      if(vmObjArray.length == nameArray.length && !cmdRun) {
        cmdRun = true;
        self.powerOpVMByMORef( vmObjArray, powerOp )
        .once('error', function(err) {
          emitter.emit('error', err);
        })
        .once('result', function(result) {
          emitter.emit('result', result);
        });
      }
      processed++;
      if(processed == allVMsArray.length && !cmdRun) {
        emitter.emit('error', 'One or more specified VMs not found!');
      }
    });

  });

  return emitter;

};

// run a power operation on a single VM or array of VMs by ManagedObjectReference
Client.prototype.powerOpVMByMORef = function( MORefs, powerOp ) {

  var self = this;
  var emitter = new EventEmitter;

  if( _.isUndefined(MORefs) || _.isEmpty(MORefs)) {
    powerOp = null;
    // console.error('MORefs content : ' + util.inspect(MORefs, {depth: null}));
    emitter.emit('error', 'No ManagedObjectReference(s) given!');
  }

  var powerCommand = null;

  switch( powerOp ) {
    case 'powerOn':
      powerCommand = 'PowerOnVM_Task';
      break;
    case 'powerOff':
      powerCommand = 'PowerOffVM_Task';
      break;
    case 'reset':
      powerCommand = 'ResetVM_Task';
      break;
    case 'standby':
      powerCommand = 'StandbyGuest';
      break;
    case 'shutdown':
      powerCommand = 'ShutdownGuest';
      break;
    case 'reboot':
      powerCommand = 'RebootGuest';
      break;
    case 'suspend':
      powerCommand = 'SuspendVM_Task';
      break;
    default:
      emitter.emit('error', 'Invalid powerOp given!');
  }

  if( powerCommand ) {
    // if one VM
    if( ! _.isArray(MORefs)) {
      MORefs = [ MORefs ];
    }
    // if multiple VMs
    var resultArray = [];

    _.forEach(MORefs, function(MORef) {
      var errorEncountered = false;
      self.runCommand( powerCommand, { _this: MORef })
      .once('result', function(result){
        var taskMORef = result.returnval;
        self.waitForValues( taskMORef , ['info.state','info.error'], 'state', ['success','error'])
        .once('result', function( result ) {
          if( result['info.error'] == undefined ) {
            resultArray.push( { obj: MORef, result: result['info.state'] } );
          } else {
            resultArray.push( { obj: MORef, result: result['info.error'] } );
            var errorEncountered = true;
          }
          if(resultArray.length === MORefs.length) {
            if(errorEncountered) {
              emitter.emit('error', resultArray);
            } else {
              emitter.emit('result', resultArray);
            }
          }
        })
        .once('error', function( err ) {
          // console.error(err);
        });
      })
      .once('error', function(err){
        // console.error(err);
        emitter.emit('error',err);
      });
    });
  }

  return emitter;
};

exports.Client = Client;


text:
/*	$NetBSD: mystring.c,v 1.16 2003/08/07 09:05:35 agc Exp $	*/

/*-
 * Copyright (c) 1991, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * This code is derived from software contributed to Berkeley by
 * Kenneth Almquist.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#if 0
#ifndef lint
static char sccsid[] = "@(#)mystring.c	8.2 (Berkeley) 5/4/95";
#else
__RCSID("$NetBSD: mystring.c,v 1.16 2003/08/07 09:05:35 agc Exp $");
#endif /* not lint */
#endif

/*
 * String functions.
 *
 *	equal(s1, s2)		Return true if strings are equal.
 *	scopy(from, to)		Copy a string.
 *	scopyn(from, to, n)	Like scopy, but checks for overflow.
 *	number(s)		Convert a string of digits to an integer.
 *	is_number(s)		Return true if s is a string of digits.
 */

#include <stdlib.h>
#include "shell.h"
#include "syntax.h"
#include "error.h"
#include "mystring.h"

char nullstr[1];		/* zero length string */

/*
 * equal - #defined in mystring.h
 */

/*
 * scopy - #defined in mystring.h
 */

/*
 * scopyn - copy a string from "from" to "to", truncating the string
 *		if necessary.  "To" is always nul terminated, even if
 *		truncation is performed.  "Size" is the size of "to".
 */

void
scopyn(const char *from, char *to, ssize_t size)
{

	while (--size > 0) {
		if ((*to++ = *from++) == '\0')
			return;
	}
	*to = '\0';
}

/*
 * prefix -- see if pfx is a prefix of string.
 */

int
prefix(const char *pfx, const char *string)
{
	while (*pfx) {
		if (*pfx++ != *string++)
			return 0;
	}
	return 1;
}

/*
 * Convert a string of digits to an integer, printing an error message on
 * failure.
 */

int
number(shinstance *psh, const char *s)
{

	if (! is_number(s))
		error(psh, "Illegal number: %s", s);
	return atoi(s);
}

/*
 * Check for a valid number.  This should be elsewhere.
 */

int
is_number(const char *p)
{
	do {
		if (! is_digit(*p))
			return 0;
	} while (*++p != '\0');
	return 1;
}


text:
KATHMANDU, Nepal — Mountaineers, guides and porters streamed from Mount Everest base camp on Sunday in the wake of a deadly earthquake-triggered avalanche that obliterated parts of the rocky village of nylon tents. Some warned that dozens of people may still be missing.
The worst injured were ferried out in helicopters, while those remaining at base camp endured a series of powerful aftershocks, some of which caused smaller but still terrifying avalanches in the surrounding mountains.
The avalanche on Saturday, set off by the massive earthquake that struck Nepal, left at least 18 people dead and dozens more injured. Overall, the quake killed more than 2,500 people.
But as the first stunned survivors of the avalanche reached Kathmandu, Nepal's capital, they said that dozens of people may still be missing and were almost certainly dead.
"The snow swept away many tents and people," said Gyelu Sherpa, a sunburned guide among the first group of 15 injured survivors to reach Kathmandu.
The 15, most of them Sherpa guides or support staff working on Everest, flew from Lukla, a small airstrip not far from Everest. None were believed to be facing life-threatening injuries, but many limped to a bus taking them to a nearby hospital, or were partially wrapped in bandages.
Bhim Bahadur Khatri, 35, a cook and a Sherpa, was preparing food in a meal tent when the avalanche struck.
"We all rushed out to the open and the next moment a huge wall of snow just piled on me," he said in a brief airport interview before being driven to a hospital. "I managed to dig out of what could easily have been my grave. I wiggled and used my hands as claws to dig as much as I could. I was suffocating, I could not breathe. But I knew I had to survive."
When he finally dug his way out, gulping in fresh air, he was surrounded by devastation. Part of the base camp village was gone.
"I looked around and saw the tents all torn and crushed. Many people were injured," he said. "I had lived but lost many of my friends."
The magnitude-7.8 quake struck at around noon Saturday — just over a year after the deadliest avalanche on record hit Everest, killing 16 Sherpa guides on April 18, 2014.
Witnesses said the avalanche began on Mount Pumori, a 7,000-meter (22,966-foot) -high mountain just a few kilometers (miles) from Everest, gathering strength as it headed toward base camp and the lower reaches of Everest's climbing routes. Numerous climbers remained stranded Sunday on routes above base camp, but teams in contact by satellite telephones said no one was believed to be in danger or running short of supplies.
Azim Afif, the 27-year-old leader of a climbing team from University of Technology Malaysia, estimated that about 80 percent of the people at base camp had left by midafternoon Sunday.
He said that the critically injured had already been evacuated, and that temporary clinics had been set up for people with lesser injuries. Everest attracts a range of climbers, from barely skilled hobbyists to some of the world's most experienced mountaineers, many of whom have extensive emergency training and come prepared with medical supplies. Those mountaineers, many on Everest to work as professional guides, almost certainly were able to treat many of the injured.
In an interview on the message service WhatsApp, Afif said that the dead were being respectfully wrapped, but that the "priority is for those injured."
Earlier in the day, Ang Tshering of the Nepal Mountaineering Association said 22 of the most seriously injured had already been taken by helicopter for treatment in the village of Pheriche, where the nearest medical facility is located. It wasn't clear whether that number had risen by late Sunday.
Nepal was also hit Sunday by a series of aftershocks, triggering more avalanches in the mountains above base camp. None of those avalanches, though, were believed to have caused further injuries.
But each aftershock, Afif said, sent people in camp running from their tents to seek shelter behind large rocks.